Actualmente estoy usando esta pila expres, socket.io, sessionstore. Seguí el artículo aquí http://www.danielbaulig.de/socket-ioexpress/. Bueno, el problema es que no puedo modificar los valores de la sesión en la devolución de llamada socket.io.Modificar los datos de la sesión desde dentro de la devolución de llamada socket.io
El acceso desde el lado express funciona bien, el elemento aumenta después de cada actualización.
app.get('/mysession', function(req, res) {
req.session.item++;
console.log(req.session);
res.render('session.jade', {
title: 'Sample title'
});
});
Usar en el lado socket.io no es así y aquí está el problema, tal vez estoy configurando el objeto equivocado.
var io = io.listen(app);
io.sockets.on('connection', function(socket) {
var handshake = socket.handshake;
onlineCount++;
console.log('Well done id %s', handshake.sessionID);
handshake.session.item++;
console.log(handshake.session);
});
Aquí está el código del puente.
io.set('authorization', function(data, accept) {
if (data.headers.cookie) {
data.cookie = parseCookie(data.headers.cookie);
data.sessionID = data.cookie['express.sid'];
sessionStore.get(data.sessionID, function(err, session) {
if (err || !session) {
accept('Error', false);
} else {
data.session = session;
accept(null, true);
}
});
} else {
return accept('No cookie tansmitted', false);
}
});