Node.js聊天 - 存储session.id供以后使用?

时间:2013-01-15 11:35:14

标签: node.js

我正在建立一个聊天,我希望将用户的session.id存储10天。因此,如果用户在8天后回来,他/她的消息将再次出现。为此,我必须以某种方式存储生成的session.id。

我将如何实现这一目标?

当前用户连接时运行的代码是:

// user_id是每个域的唯一ID,以便每个聊天都有自己的空间

socket.on('adduser', function(user_id){

    var sid = socket.id;
    console.log('Socket.id ====>', sid);

    socket.join('Room_' + user_id);
    socket.broadcast.to('Room_' + user_id).emit('updatechat', 'SERVER','Hello');
});

1 个答案:

答案 0 :(得分:0)

使用快速会话存储来存储和检索cookie / sessionID信息。根据以下示例代码,使用具有授权的socket.io来提取用户连接上的sessionID:

var parseCookie = require('connect').utils.parseCookie;
sio.set('authorization', function (data, accept) {
    if (data.headers.cookie) {
        data.cookie = parseCookie(data.headers.cookie);
        data.sessionID = data.cookie['express.sid'];
    } else {
       return accept('No cookie transmitted.', false);
    }
    accept(null, true);
});

Cookie将包含Express会话的sessionID。

现在可以通过socket.io连接对象的handshake属性访问分配给数据对象的所有属性。

sio.sockets.on('connection', function (socket) {
    console.log('A socket with sessionID ' + socket.handshake.sessionID 
        + ' connected!');
});

希望这有帮助。