我一直试图绕过这个问题几天,我只是不明白。当我离开网页时,我想杀死我的会话,但我得到的异常(崩溃了服务器)是:
TypeError: Cannot read property 'destroy' of undefined
at Socket.<anonymous> (/home/ubuntu/workspace/server.js:46:20)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at Socket.emit (/home/ubuntu/workspace/node_modules/socket.io/lib/socket.js:128:10)
at Socket.onclose (/home/ubuntu/workspace/node_modules/socket.io/lib/socket.js:425:8)
at Client.onclose (/home/ubuntu/workspace/node_modules/socket.io/lib/client.js:232:24)
at emitTwo (events.js:92:20)
at Socket.emit (events.js:172:7)
at Socket.onClose (/home/ubuntu/workspace/node_modules/socket.io/node_modules/engine.io/lib/socket .js:304:10)
at WebSocket.g (events.js:260:16)
我与断开的连接:
// create socket.io connection
io.on('connection', function(socket) {
if(sess != null) {
list.push(sess);
}
if(list != null) {
for(var i = 0; i <= list.length; i++) {
//console.log("User with session id connected: " +sess['sesid']);
console.log(JSON.stringify(sess['sesid']) + " CONNECTED");
}
}
socket.on('disconnect', function(req){
req.session.destroy(sess.sesid);
//destroy session
console.log('session killed');
});
任何人都知道如何更容易地做到这一点?我只是将每个新连接添加到我保存sessionID的会话列表中,并在将来添加“用户名”以区分当前在线用户,然后在他们断开连接时删除使用。
答案 0 :(得分:0)
感谢pay(https://stackoverflow.com/users/1438893/pay)找到这两个方便的帮助链接,我选择使用clientid并从连接的套接字列表中删除它。
Socket.io disconnect client by id
和