2013-01-15 24 views
1

我正在建立一个聊天,我想存储用户的session.id 10天。因此,如果用户在8天后回来,他/她的消息将再次出现。为了这个工作,我必须以某种方式存储生成的session.id。Node.js聊天 - 存储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'); 
}); 

回答

0

使用Express会话店并检索cookie/sessionID信息。使用socket.io授权而提取会话ID的用户连接按下面的示例代码:

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将包含我们的快递会话的SessionID。

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

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

希望这会有所帮助。

+0

我不太明白,我在这里粘贴了代码:http://pastebin.com/9BkuzcE9应该工作吗? – Elvin

+0

我必须在客户端上设置任何东西吗? – Elvin

+0

客户端的实现不会有任何变化。 – almypal