2011-11-09 62 views
1

在我的网站我有所有在线用户的列表,通过Node.js的实时更新之间的连接(我使用now.js)Node.js加载如何让页面载入

的问题是,当用户浏览我的网站时,他们当然会在新页面加载时断开几秒钟。这意味着它们会从所有其他客户端的列表中消失,并在几秒钟后重新出现。

有什么办法可以设置断开连接功能的超时时间,例如:如果用户在30秒内未重新连接,请从列表中删除,否则不要?

或者如果有更好的方法来实现这个目标?可有人请点我在正确的方向:)

编辑:

想出了一个可行的解决方案,如果有人想知道。在服务器端我有这个功能

nowjs.on('disconnect', function() { 
    everyone.now.clientDisconnected(); 
}); 

其中只要用户断开连接客户端上的调用此函数

now.clientDisconnected = function() { 
    setTimeout(function() { now.serverUpdateUsers(); }, 20000); 
} 

因此,而不是更新的用户马上,我们等待20秒。届时用户应完成加载新页面,并且所有其他客户端都不会显示任何差异。

serverUpdateUsers();是收集所有用户数据并将其推送给所有客户端的服务器功能。

回答

0

我不确定是否可以使用now.js(使用Socket.IO)修改Socket.IO的设置,但是如果可以(不确定,从未使用now.js)应该设置心跳间隔要大些:

​​

心跳间隔默认为20秒

+0

是的,也许是个好主意。但我真的不知道他们是如何相互作用的。上面提出了一个简单的解决方案...也许不是最佳的,但它的工作原理 – hampusohlsson