Socket.IO node.js conexión websocket no válido puerto 8081

He visto algunas publicaciones en este foro sobre Socket.IO y node.js. Pero todavía no está funcionando de manera óptima.

mi servidor web utiliza el puerto 80 y el puerto 8080 para diferentes aplicaciones. Así que en App.js y mi conexión de socket, agregué el puerto 8081 en lugar de 8080.

Estoy recibiendo el mensaje inválido de conexión websocket. Después de aproximadamente 10 segundos, creó el websocket y puedo usarlo perfectamente.

Pero 10 segundos es demasiado largo. Alguna idea de cómo solucionar este problema?

script.js:

 var socket = io.connect('http://domainname.nl:8081'); socket.on('connect', function(){ socket.emit('adduser', "first_name; ?>"); }); 

app.js

 var app = require('express').createServer() var io = require('socket.io').listen(8081); app.listen(8081); // routing app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); 

ACTUALIZAR:

Cuando lo haya cambiado. Todavía tengo el problema. Los sockets funcionan pero tardan 10 segundos en conectarse.

  info - socket.io started debug - served static /socket.io.js debug - client authorized info - handshake authorized 15619940591959058675 debug - setting request GET /socket.io/1/websocket/15619940591959058675 debug - set heartbeat interval for client 15619940591959058675 warn - websocket connection invalid info - transport end debug - set close timeout for client 15619940591959058675 debug - cleared close timeout for client 15619940591959058675 debug - cleared heartbeat interval for client 15619940591959058675 debug - client authorized for debug - setting request GET /socket.io/1/xhr-polling/15619940591959058675?t=1345479037596 debug - setting poll timeout debug - clearing poll timeout 

De hecho, está intentando iniciar dos servidores diferentes, uno para su app y otro para socket.io, ambos usando el mismo puerto, 8081 :

 var app = require('express').createServer() var io = require('socket.io').listen(8081); app.listen(8081); 

Puede pasar un número de puerto a socket.io de esta manera, pero si lo va a ejecutar con un servidor http de nodo, debe pasar eso (es decir, la app ) para escuchar, así:

 var app = require('express').createServer() var io = require('socket.io').listen(app); app.listen(8081); 

Tuve el mismo problema al conectarme a través de un proxy.

Mi servidor (express + socket.io, como se describió @Linux G Thiel) escuchó en app.example.com:12345 y se configuró un proxy para servirlo en example-app.com (puerto 80). Funcionó correctamente cuando se accedió a través de la URL real, pero mostró un retraso de 10 segundos en la conexión de websocket cuando se accedió a través del proxy.

Me las arreglé para arreglarlo simplemente cambiando

 var socket = io.connect();` 

a

 var socket = io.connect('http://app.example.com:12345') 

en el código del lado del cliente.