小编sko*_*zan的帖子

ExpressJS和Websocket和会话共享

我正在尝试基于Node.js创建一个聊天应用程序.我想强制websocket服务器(ws库)使用ExpressJS会话系统.不幸的是,我卡住了.用于获取会话数据的MemoryStore哈希值与cookie中的会话ID不同.有人可以解释一下我做错了什么吗?

Websocket服务器代码部分:

module.exports = function(server, clients, express, store) {
  server.on('connection', function(websocket) {
    var username;

    function broadcast(msg, from) {...}

    function handleMessage(msg) {...}

    express.cookieParser()(websocket.upgradeReq, null, function(err) {
        var sessionID = websocket.upgradeReq.cookies['sid'];

            //I see same value in Firebug
        console.log(sessionID);

            //Shows all hashes in store
            //They're shorter than sessionID! Why?
        for(var i in store.sessions)
            console.log(i);

        store.get(sessionID, function(err, session) {
                websocket.on('message', handleMessage);

                //other code - won't be executed until sessionID in store

                websocket.on('close', function() {...});
        });
    });
});
}
Run Code Online (Sandbox Code Playgroud)

商店对象定义:

var store = new express.session.MemoryStore({ …
Run Code Online (Sandbox Code Playgroud)

session websocket node.js express

21
推荐指数
3
解决办法
2万
查看次数

标签 统计

express ×1

node.js ×1

session ×1

websocket ×1