Socket.io 1.0.5:如何保存会话变量?
Posted
技术标签:
【中文标题】Socket.io 1.0.5:如何保存会话变量?【英文标题】:Socket.io 1.0.5 : How to save session variables? 【发布时间】:2014-08-09 01:16:13 【问题描述】:不幸的是,socket.io 开发团队决定弃用 set() 和 get() 函数。问题是这两个函数允许我们将变量保存到会话中。
所以我的问题是: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);
);
感谢您的帮助, 纪尧姆。
【问题讨论】:
【参考方案1】:socket.io-handshake 是 socket.io 1.x 的会话中间件。它建立在 express-session 和 cookie-parser 之上。我知道我们在谈论 socket.io 而不是 express,但它仍然适用于 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();
);
【讨论】:
拜托,您能否在您的socket.io-handshake
github/npm 中添加可以通过这种方式访问会话变量的信息...socket.handshake.session.data
。否则很难找到。
我发布了一个新版本
我想将您的答案设置为有效,但我丢失了这个旧帐户。我会赞成你。对不起:/【参考方案2】:
您的“套接字”是一个 javascript 对象,您可以向其中添加任何其他键/值。
socket['mySessionVar'] = 'myValue';
console.log( "I have a super variable save in the session: " + socket['mySessionVar']);
【讨论】:
以上是关于Socket.io 1.0.5:如何保存会话变量?的主要内容,如果未能解决你的问题,请参考以下文章
socket.io 身份验证与共享会话数据,io.use() 如何工作