【问题标题】:Socket.io 1.0.5 : How to save session variables?Socket.io 1.0.5:如何保存会话变量?
【发布时间】: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);
});

感谢您的帮助, 纪尧姆。

【问题讨论】:

    标签: javascript node.js socket.io socket.io-1.0


    【解决方案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']);
    

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多