我正在使用套接字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() { ... });

09-25 19:50