Sto utilizzando Socket.io
in un'applicazione di chat che sto creando. Sto cercando di impostare la sessione in modo da poter mantenere il login degli utenti tra una sessione e l'altra.Socket IO solo sessione non persistente
Ecco il codice rilevante:
index.js (server)
var cookieParser = require('cookie-parser')();
var session = require('cookie-session')({ secret: 'secret' });
app.use(cookieParser);
app.use(session);
io.use(function(socket, next) {
var req = socket.handshake;
var res = {};
cookieParser(req, res, function(err) {
if (err) return next(err);
session(req, res, next);
});
});
io.on('connection', function(socket){
socket.on('test 1', function(){
socket.handshake.test = 'banana';
});
socket.on('test 2', function(){
console.log(socket.handshake.test);
});
});
Chat.js (client)
var socket = io();
socket.emit('test 1');
socket.emit('test 2');
Il codice sopra funziona, lo farà stampare banana
nella console come previsto. Tuttavia, se io commento la 'prova 1' in questo modo:
var socket = io();
// socket.emit('test 1');
socket.emit('test 2');
Si stamperà undefined
alla console.
Non dovrebbe ancora essere in grado di stampare banana
, poiché sta utilizzando una sessione ed è persistente tra le richieste? Incontro anche lo stesso problema se inverso l'ordine in cui chiamo "test 1" e "test 2".
Cosa sto sbagliando? Cosa mi manca perché la sessione continui come previsto?
costa usare 'socket.handshake.session.test = 'banane';' 'test per 1' e' socket.handshake. session.test' per 'test 2' funziona? –