2010-11-04 6 views
14

Ho un progetto e sto usando socket.io con espresso,socket.io con espresso

così che cosa ho bisogno (ho provato) sta trasmettendo un messaggio, ma da un'azione espresso. questo è possibile non so come ottenere un riferimento per inviare o trasmettere.

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

Altre cose come l'utilizzo di entrambi esprimono + socket.io sta lavorando con me :)

risposta

0

Guarda il mio esempio di pronti contro termine in cui io uso ExpressJS + Juggernaut (PubSub oltre socket.io):

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

Questo potrebbe essere eccessivo per ciò che è necessario in quanto utilizza Pubblica/sottoscrivi. Tuttavia, in una certa misura, risolve il problema relativo all'utilizzo di rotte ExpressJS regolari. Checkout il ramo master dopo la clonazione del repository:

git checkout master

+0

Quando eseguo "git clone git: //github.com/shripadk/express-juggernaut.git" ottengo questo errore: "fatale: il capo remoto riattaccato in modo imprevisto" – ibmkhd

+0

Intendi eseguire questo comando "git clone git: //github.com/shripadk/express-juggernaut-demo.git ", questo è lavoro per me ma quando creo" git checkout master "ottengo" Già sul 'master' ", ho ignorato questo ed eseguito il demo put ottengo questo – ibmkhd

+0

Il modulo 'sys' è ora chiamato 'util'. Dovrebbe avere un'interfaccia simile. node.js: 50 throw e; // process.nextTick error, o evento 'error' sul primo tick ^ Errore: impossibile trovare il modulo 'utils' su resolveModuleFilename (node.js: 265: 13) su loadModule (node.js: 231: 20) su require (node.js: 291: 14) su Oggetto. (/home/ibrahim/ws/Lebanon/staTest/express-juggernaut-demo/lib/support/juggernaut/lib/juggernaut/channel.js:2:13) su Module._compile (node.js: 348: 23) in Object..js (node.js: 356: 12) in Module.load (node.js: 279: 25) – ibmkhd

0

ho trovato un bel esempio di come fare che cosa ho bisogno, ma con Faye è qui http://nodecasts.org/.

non so la differenza tra Juggernaut, Faye e Socket.io diretta, ma Faye è buono

per il mio caso .E penso entrambi utilizzano Socket.io internamente.

+1

Faye non utilizza socket.io internamente. È basato sul protocollo bayeux. Tuttavia, è buono :) –

3

Finché ho capito,

Perché non utilizzare il tipo di messaggio presa come un evento invece di un HTTP GET o POST? Sul lato client si invierà un messaggio tramite websocket con una proprietà evento.

Quindi nel tuo caso:

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

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

E sul lato server:

 
var io = io.listen(server); 

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

si potrebbe desiderare di avere uno sguardo al mio socket.io + Express primer. Quello che vuoi è coperto in dettaglio lì.

// 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!'); 

Dove io è il valore restituito dalla chiamata a socketio.listen(). È possibile inserire quel codice in qualsiasi punto dell'applicazione, ad esempio nei callback app.get.