ErreBefeLandia

miƩrcoles, 2 de mayo de 2012

miƩrcoles, 29 de febrero de 2012

how to make connect and socket.io listen on the same port.

On previous versions of connect this could be done using:



var connect = require('connect');
var sys = require('util');
var http = require('http');
var io = require('socket.io');

var server = connect(
connect.cookieParser()
,connect.session({secret:'approves', cookie:{maxAge:3600000}, store:memoryStore})
,connect.favicon()
        ,everyauth.middleware()
        ,connect.static(__dirname+'/www')
,function(req, res){
          //nothing to do here!
});
io = io.listen(server);
server.listen(8081);


and it would allow socket.io to answer on requests with a url  /socket.io/....
but after a recent npm update this code stopped working.

currently:

  name: connect,
  version: 2.0.0
  name: socket.io
  version: 0.9.0

requests using the previously written code doesnt allow socket.io to hijack requests addressed to its url.
It has to be done exactly in this order: 

var connect = require('connect');
var sys = require('util');
var http = require('http');
var io = require('socket.io');

var server = connect()        
        .use(function(req, res){            
            console.log('serving!' + req.url);  
            res.end('nothing');
        });

var httpServer = http.createServer(server);
io = io.listen(httpServer);
httpServer.listen(8080);

If you do it this way, it will continue to work as expected serving the socket.io/socket.io.js

Contador