2012-05-28 18 views
7

C'è un buon modo di utilizzare le sessioni con Socket.io in Express 3.0? Un modo per ottenere l'ID della sessione dei clienti in modo sicuro? In modo che possa inviare notifiche ai membri specifici del proprio account e fare chat private da un membro all'altro?Socket.io Express 3 sessioni

Sto usando MySQL negozio a Express 3.0

+0

Per 4.x Express & socket.io 1.x http://stackoverflow.com/a/25618636/153718 – Epeli

risposta

0

ho fatto qualcosa di leggermente diverso per farlo funzionare. Ho letto un sacco di messaggi on nodester github ed è venuto con la seguente soluzione ....

Sostituire:

http.createServer(app).listen(app.get('port'), function(){ 
     console.log("Express server listening on port " + app.get('port')); 
    }); 

con:

var server = http.createServer(app).listen(app.get('port'), function(){ 
    console.log("Express server listening on port " + app.get('port')); 
}); 

var io = require('socket.io').listen(server); 

Il mio piano è quello di continuare con questa soluzione fino a quando i problemi attorno a express3 e socket.io sono risolti.

9

Ho scritto un piccolo modulo per astrarlo, ecco come appare il suo utilizzo. È stato scritto e testato usando express 3, socket.io 0.9.10 e il (predefinito) MemoryStore dalla connessione 2.4.5. Dovrebbe funzionare bene con altri negozi compatibili.

var SessionSockets = require('session.socket.io') 
    , sessionSockets = new SessionSockets(io, sessionStore, cookieParser); 

sessionSockets.on('connection', function (err, socket, session) { 
    //your regular socket.io code goes here 
}); 

Per maggiori dettagli su come funziona vedono https://github.com/wcamarao/session.socket.io

si potrebbe desiderare di prestare attenzione alla parte del README in cui si dice come usarlo con la propria chiave di sessione negozio (sto assumendo il tuo negozio mysql usa un nome diverso da quello predefinito 'connect.sid').

+0

Opere come un incantesimo, grazie! –

Problemi correlati