Socket.io断开连接事件会在很长时间后触发

时间:2015-07-06 11:20:25

标签: 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.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);
    }
  }
}

我猜代码正在执行,但需要很长时间才能发出断开连接事件。客户端断开连接后大约2分钟我收到断开连接消息。为什么需要这么长时间?这段代码可能有什么问题?

我也无法理解客户端何时被视为断开连接。如果应用关闭,或浏览器关闭或互联网出现故障?

提前致谢。

更新:我在Cloud9上进行了测试部署,我的实时部署在Azure云上。我已经意识到Cloud9的工作非常完美,这似乎是Azure的一个问题。

更新2:每当我断开/关闭/刷新我的Web客户端时,我立即得到服务器发出的断开事件。我的移动客户端也不会发生同样的情况。为什么?

0 个答案:

没有答案