我正在使用套接字io开发一个应用程序,但我的双向触发事件无法正常工作,我做了所有工作,如文档所说,并且仍然相同...几天前仍在工作,但现在不再工作了,我没有从那以后就不再编辑任何代码
var io = require('socket.io')(server);
io.on('event', function(data){});
var socketUsers = [];
io.use(sharedSession(session, {
autoSave: true
}));
io.on('connection', function(socket) {
socketUsers.push(socket);
console.log('Player connected: ' + socket.id);
console.log('Connected players: ' + socketUsers.length);
io.on('disconnect', function() {
for(var i = 0; i < socketUsers.length; i++) {
console.log(socketUsers[i].id);
if(socketUsers[i].id == socket.id) {
//delete socketUsers[i];
socketUsers.splice(i);
break;
}
}
console.log(socketUsers.length + ' players online.');
});
io.on('chat message', function(msg){
io.emit('chat message', msg);
console.log('message: ' + msg);
});
function broadcast(key, value) {
io.emit(key, value);
}
});
最佳答案
您将disconnect
事件处理程序附加到服务器实例(io
)而不是套接字实例(socket
)。
因此,请尝试以下操作:
socket.on('disconnect', function() { ... });