Javascript Socket.io断开事件在长时间后触发

Javascript Socket.io断开事件在长时间后触发,javascript,node.js,socket.io,ionic-framework,Javascript,Node.js,Socket.io,Ionic Framework,我只是想用Socket.io创建一个简单的应用程序。我试图向所有连接的用户发送一个通知(从技术上讲,是发出一个事件),如果某个特定的用户,即用户X已断开连接,该用户X已离开或已断开连接。 这是我的服务器端代码 io.on('connection', function(socket){ console.log('Connected! ' + socket.id); socket.on('disconnect', function(){ for(var i=0;i<onlineUsers

我只是想用Socket.io创建一个简单的应用程序。我试图向所有连接的用户发送一个通知(从技术上讲,是发出一个事件),如果某个特定的用户,即用户X已断开连接,该用户X已离开或已断开连接。 这是我的服务器端代码

io.on('connection', function(socket){
console.log('Connected! ' + socket.id);

socket.on('disconnect', function(){
  for(var i=0;i<onlineUsers.length;i++)
  {
    if(onlineUsers[i].socketId == socket.id)
    {
        var newMessage = {};
        newMessage.socketId = onlineUsers[i].socketId;
        newMessage.fullName = onlineUsers[i].fullName;
        newMessage.message = newMessage.fullName + " IS DISCONNETED!";
        io.emit('newMessage', newMessage);

        onlineUsers.splice(i,1);
        console.log('splicing id ' + socket.id);
    }
  }
}
io.on('connection',函数(socket){
console.log('Connected!'+socket.id);
socket.on('disconnect',function()){

对于(var i=0;默认情况下,iSocket io应每15秒发送一次心跳(aka ping)信号。如果客户端未能响应,则视为已断开连接。此外,当客户端发送TCP关闭数据包时(即,当客户端正常断开连接时)。但是2分钟的延迟似乎太长了。但可能是网络延迟?如何填写
online users
数组?我想我们需要更多详细信息,代码似乎还可以。其余的代码工作得很好。我今天添加了这条新消息和所有5行。online users数组是在连接事件时填写的。