从socket.io中访问会话

时间:2014-05-26 12:21:12

标签: node.js session socket.io

是否可以访问和修改会话变量 从socket.io级别?

来自请求的常规示例

 req.session.variable = 5 

1 个答案:

答案 0 :(得分:2)

您可以使用此项目在socket.io中使用会话

https://github.com/wcamarao/session.socket.io

或者自己动手:

从handshakedata获取cookie

socket.handshake.headers.cookie

使用cookie模块解析cookie

var cookie = require('express/node_modules/cookie');
var cookies = cookie.parse(socket.handshake.headers.cookie);

Cookie已签名,因此您需要先验证它,然后获取sessionID

var connect  = require('express/node_modules/connect');
var sessionID = connect.utils.parseSignedCookie(cookies['connect.sid'], /*The secret you used in your express session*/);

然后您可以从会话仓库加载会话

sessionStore.load(sessionID, function (err, session) {
                if (!err && session) {
                    //Here you have your session if everything ok
                }
            });