长时间触发Socket.io断开连接事件

我只是想使用Socket.io创build一个简单的应用程序。 我试图发送一个通知(技术上,发出一个事件)给所有连接的用户,如果一个特定的用户,用户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分钟后,我收到断开连接消息。 为什么需要这么长时间? 这段代码可能是错的吗?

我也不明白什么时候客户端被认为是断开的。 如果应用程序closures,或者浏览器closures或互联网closures?

提前致谢。

更新:我在Cloud9上进行了testing部署,而且我的实时部署在Azure Cloud上。 我已经意识到,Cloud9的工作是完美的,这似乎是Azure的问题。

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