2010-11-04 37 views
14

Tengo un proyecto y estoy usando socket.io con expreso,socket.io con expreso

así que lo que necesito (probé) está transmitiendo un mensaje, sino de una acción urgente. es esto posible, no sé cómo obtener una referencia para enviar o transmitir.

app.get('/', function(req, res) { 
//i need to send messages from here 
}); 

Otras cosas como el uso de ambos expresan + socket.io está trabajando conmigo :)

Respuesta

0

Salida mi ejemplo repo donde uso ExpressJS + Juggernaut (pubsub sobre socket.io):

http://github.com/shripadk/express-juggernaut-demo

Esto podría ser excesivo para lo que necesita, ya que utiliza Publicar/Suscribir. Pero, en cierta medida, resuelve el problema del uso de rutas regulares de ExpressJS. Pedido de la rama principal después de clonar el repositorio:

git checkout master

+0

Cuando ejecuto "git clone git: //github.com/shripadk/express-juggernaut.git" me sale este error: "fatal: el extremo remoto colgó inesperadamente" – ibmkhd

+0

¿Quiere decir que está ejecutando este comando? Git clone git: //github.com/shripadk/express-juggernaut-demo.git ", esto es trabajo para mí, pero cuando hago" git checkout master "obtengo" Ya estoy en 'master' ", ignoré esto y ejecuté el demo puesto me sale – ibmkhd

+0

El módulo 'sys' ahora se llama 'util'. Debería tener una interfaz similar. node.js: 50 throw e; // error de process.nextTick, o evento 'error' en la primera marca ^ Error: No se puede encontrar el módulo 'utils' en resolveModuleFilename (node.js: 265: 13) en loadModule (node.js: 231: 20) at require (node.js: 291: 14) en Object. (/home/ibrahim/ws/Lebanon/staTest/express-juggernaut-demo/lib/support/juggernaut/lib/juggernaut/channel.js:2:13) en Module._compile (node.js: 348: 23) en Object..js (node.js: 356: 12) en Module.load (node.js: 279: 25) – ibmkhd

0

encontré un buen ejemplo de cómo hacer lo que necesito pero con Faye Es aquí http://nodecasts.org/.

No sé la diferencia entre Juggernaut, Faye y directa Socket.io pero Faye es bueno

para mi caso .Y creo que ambos de ellos utilizan Socket.io internamente.

+1

Faye no usa socket.io internamente. Se basa en el protocolo bayeux. Sin embargo, es bueno :) –

3

Mientras que entiendo,

Por qué no usar el tipo de mensaje conector como un evento en lugar de un HTTP GET o POST? En el lado del cliente, enviaría un mensaje a través del websocket, digamos una propiedad del evento.

Así, en su caso:

 
<script> 
    // Initialize socket.io ... 

    // and then 
    socket.send({event: 'homepage loaded', foo: 'bar'}); 
</script> 

Y en el lado del servidor:

 
var io = io.listen(server); 

io.on('connection', function (client) { 
    client.on('message', function (message) { 
    if (message.event == 'homepage loaded') { 
     client.broadcast(...); 
    } 
    }); 
}); 
4

Es posible que desee echar un vistazo a mi socket.io + Express primer. Lo que quiere está cubierto en detalle allí.

// Send to all connected sockets 
io.sockets.send('Hello, World!'); 

// Send to all sockets in a specified room 
io.sockets.in('room').send('Hello, Room!'); 

Dónde io es el valor devuelto por la llamada a socketio.listen(). Puede colocar ese código en cualquier lugar de su aplicación, por ejemplo, en sus callbacks app.get.