Estoy tratando de comenzar con node.js y socket.io.
Tengo una muy simple (muy) simple aplicación de prueba de cliente-servidor y no puedo hacer que funcione.
El sistema está configurado en una máquina de Windows con un servidor apache.
El Apache se está ejecutando en el port 81
y la socket.io está configurado para escuchar port 8001
socket.io - el evento 'connect' no se activa en el cliente
servidor - server.js
var io = require('socket.io').listen(8001);
io.sockets.on('connection', function (socket) {
console.log('\ngot a new connection from: ' + socket.id + '\n');
});
cliente - index.html
<!DOCTYPE html>
<html>
<head>
<title>node-tests</title>
<script type="text/javascript" src="http://localhost:8001/socket.io/socket.io.js"> </script>
<script type="text/javascript">
var socket = io.connect('http://localhost', { port: 8001 });
socket.on('connect', function() {
alert('connect');
});
socket.on('error', function (data) {
console.log(data || 'error');
});
socket.on('connect_failed', function (data) {
console.log(data || 'connect_failed');
});
</script>
</head>
<body>
</body>
</html>
Después de iniciar mi servidor usando node server.js
, la salida estándar (esperada) es wr Itten a la consola del servidor:
info: socket.io started
Al abrir index.html
en el navegador (Chrome en mi caso - no probar en otros navegadores) el siguiente registro se escribe en la consola del servidor:
info: socket.io started
debug: served static content /socket.io.js
debug: client authorized
info: handshake authorized 9952353481638352052
debug: setting request GET /socket.io/1/websocket/9952353481638352052
debug: set heartbeat interval for client 9952353481638352052
debug: client authorized for
got a new connection from: 9952353481638352052
debug: setting request GET /socket.io/1/xhr-polling/9952353481638352052?t=1333635235315
debug: setting poll timeout
debug: discarding transport
debug: cleared heartbeat interval for client 9952353481638352052
debug: setting request GET /socket.io/1/jsonp-polling/9952353481638352052?t=1333635238316&i=0
debug: setting poll timeout
debug: discarding transport
debug: clearing poll timeout
debug: clearing poll timeout
debug: jsonppolling writing io.j[0]("8::");
debug: set close timeout for client 9952353481638352052
debug: jsonppolling closed due to exceeded duration
debug: setting request GET /socket.io/1/jsonp-polling/9952353481638352052?t=1333635258339&i=0
...
...
...
En la consola de navegadores me sale:
connect_failed
así que parece que el cliente está alcanzando el servidor y tratar de conectar, y el servidor está autorizando el apretón de manos, pero elEl eventonunca se activa en el cliente, en su lugar, el método connect alcanza su connect timeout
y max reconnection attempts
y deja de devolver connect_failed
.
Cualquier ayuda \ opinión sobre esto sería útil.
Gracias
intente Es usando io.connect() se puede inferir la URL y puerto desde la url en la que estás. Me he encontrado con problemas en el pasado con cosas en io.connect que no funcionaban como esperaba. –
@kfiroo ¿obtuviste alguna solución para esto? – Hackableweb
@TimothyStrimple Gracias Tim! ** ¡Trabajando de nuevo en heroku (Cedar) y localhost **! – AmpT