2014-06-18 202 views
2

不幸的是,socket.io开发团队决定弃用函数set()和get()。问题是这两个函数允许我们将变量保存到会话中。Socket.io 1.0.5:如何保存会话变量?

所以我的问题是:什么是在socket.io 1.0.5以下代码的等效?

socket.set('mySessionVar', 'myValue'); 

socket.get('mySessionVar', function (error, mySessionVar) { 
    console.log('I have a super variable save in the session : '+mySessionVar); 
    socket.emit('mySessionVar', mySessionVar); 
}); 

谢谢你的帮助, 纪尧姆。

回答

5

你的'套接字'是一个Javascript对象,你可以添加任何额外的键/值。

socket['mySessionVar'] = 'myValue'; 
console.log("I have a super variable save in the session: " + socket['mySessionVar']); 
6

socket.io-handshake是socket.io 1.x的会话中间件。它建立在express-session和cookie解析器之上。我知道我们正在讨论socket.io而不是表达,但它仍然适用于socket.io。这个例子将使你的会话存在于一个redis商店中。

var expressSession = require('express-session'); 
var connectRedis = require('connect-redis')(expressSession); 
var cookieParser = require('cookie-parser'); 
var config = { session: { secret:'secret', key: 'bus.io', store: new connectRedis() } }; 
var handshake = require('socket.io-handshake'); 
var io = require('socket.io')(3000); 
io.use(handshake(config.session)); 
io.on('connection', function (socket) { 
    socket.handshake.session.data = "whatever data I want"; 
    socket.handshake.session.save(); 
}); 
+0

,能不能请您添加到您的'socket.io-handshake' github上/ NPM,人们可以访问这种方式...'socket.handshake.session.data'会话变量。否则很难找出答案。 –

+0

听起来很好,谢谢你的提示 –

+0

我发表了一个新版本 –