2012-05-28 30 views
7

¿Hay alguna manera de usar sesiones con Socket.io en Express 3.0? ¿Una forma de obtener la identificación de sesión de los clientes de forma segura? ¿Para poder enviar avisos a miembros específicos de su cuenta y hacer chats privados de miembro a miembro?Socket.io Express 3 sesiones

estoy usando MySQL en tienda Express 3.0

+0

Para 4.x expresa y Socket.IO 1.x http://stackoverflow.com/a/25618636/153718 – Epeli

Respuesta

0

hice algo ligeramente diferente para conseguir que funcione. He leído a través de una gran cantidad de puestos on nodester github y vine con la siguiente solución ....

Reemplazar:

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); 

Mi plan es continuar con esta solución hasta que los asuntos alrededor de express3 y socket.io se resuelven.

9

Escribí un pequeño módulo para resumirlo, así es como se ve su uso. Fue escrito y probado usando Express 3, socket.io 0.9.10 y MemoryStore (predeterminado) de connect 2.4.5. Debería funcionar bien con otras tiendas compatibles.

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 
}); 

Para más detalles sobre cómo funciona ver https://github.com/wcamarao/session.socket.io

Es posible que desee prestar atención a la parte de la README donde dice cómo usarlo con su propia llave de almacenamiento de sesión (estoy asumiendo su tienda mysql usa un nombre diferente al predeterminado 'connect.sid').

+0

Obras como un encanto, gracias! –

Cuestiones relacionadas