2010-08-02 21 views
10

Estoy tratando de enviar datos desde mi navegador (Chrome) a un servidor de nodejs y estoy teniendo problemas terribles.Nodejs y websockets

Básicamente, Tengo el código que aparece en el navegador:

<script src="./Socket.IO/socket.io.js"></script> 
<script> 
     io.setPath('./Socket.IO/'); 

     var socket=new io.Socket('xxx.xxx.xxx.xxx'); 

     socket.on('connect',function(){ 
       alert('connect');  
     }); 
     socket.on('message',function(msg){ 
       alert('message'+msg); 
     }); 
     socket.on('close',function(){ 
       alert('close'); 
     }); 
     socket.on('disconnect',function(){ 
       alert('disconnect'); 
     }); 
     socket.connect(); 

</script> 

La única alerta que está apareciendo es el 'cierre' de alerta.

Aquí está mi código de servidor:

var http=require('http'); 
var io=require('./Socket.IO-node'); 

var server=http.createServer(function(req, res){ 
    // your normal server code 
    res.writeHeader(200, {'Content-Type': 'text/html'}); 
    res.writeBody('<h1>Hello world</h1>'); 
    res.finish(); 
}); 

var socket=io.listen(server,{transports:websocket,port:8080}); 

socket.on('connection',function(client){ 
     console.log('connection'); 
}); 

Se puede ver que estoy tratando de registrar las conexiones a la consola, pero nada aparece. He estado buscando en Google e intentando trabajar con los ejemplos de Socket.IO en http://github.com/LearnBoost/Socket.IO-node y nada parece funcionar para mí ...

Cualquier apuntador es muy apreciado.

Editar: Hola,

Tengo el siguiente código de servidor ahora:

var http=require('http'); 
var io=require('./Socket.IO-node'); 

var server=http.createServer(function(req, res){ 
     //your normal server code 
     res.writeHead(200, {'Content-Type': 'text/html'}); 
     res.write('Hello world'); 
     res.end(); 
}); 

server.listen(8124); 
server=io.listen(server); 
server.on('connection', function(client){ 
     console.log('EOH connected'); 
     sys.log('EOH connected'); 
}); 
server.on('clientConnect',function(client){ 
     console.log('EOH connected'); 
     sys.log('EOH connected'); 
}); 
server.on('clientDisconnect',function(client){ 
     console.log('EOH disconnected'); 
     sys.log('EOH disconnected'); 
}); 

Y el siguiente código de cliente:

<script> 
window.onload=function(){ 
io.setPath('./Socket.IO/'); 
socket = new io.Socket('localhost', {'port': 8124}); 
socket.connect(); 
socket.send('xxx'); 
} 
</script> 

Cuando cargo el código de cliente en localhost: 8124, esperaría que se desencadenaran algún tipo de eventos 'clientConnect'. También estoy enviando datos sobre el objeto socket y no aparece nada en el servidor ... Totalmente perplejo. Mirando usando node-websocket-server ahora (http://github.com/miksago/node-websocket-server).

Solución: git clone git: //github.com/LearnBoost/Socket.IO.git --recursive

Uso bandera --recursive. Doh!

Respuesta

0

este código funciona para mí:

var server = http.createServer(...);  

server.listen(8124); 
server = io.listen(server); 
server.on('connection', function(client){ 
    sys.log('client connected'); 
}); 

y luego en el cliente:

io.setPath('/media/js/Socket.IO/'); 
socket = new io.Socket('localhost', {'port': 8124}); 
socket.connect(); 

Tal vez el parámetro puerto explícita ayudará en su caso?

+0

Hola, gracias por eso. Probé el código que me dio y no recibo ningún mensaje en la consola del lado del servidor; ( – Eamorr

+0

¿Su instancia de nodo tiene suficientes derechos para abrir el puerto? Tal vez esta es una razón por la que los ejemplos no funcionan. Puede intentarlo sudo node server.js También, ¿funciona hello-world? Visite http: // localhost: 8124/- si no hay 'hola mundo', entonces el problema es con el servidor parte de su aplicación - con nodo básico .js despliegue. Si es así, primero intente ejecutarlo sin Socket.IO. También verifique la consola de error en el navegador: si falla otro js, ​​entonces el método de conexión puede no ejecutarse. –

+2

También es posible que falten algunos archivos de socket.io. ERRAN desaparecidos en las descargas de github ahora. Intenta hacer el pago de git: git clone git: //github.com/LearnBoost/Socket.IO.git --recursive en lugar de descargar el archivo zip. –