Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js如何保持页面加载之间的连接_Javascript_Node.js - Fatal编程技术网

Javascript Node.js如何保持页面加载之间的连接

Javascript Node.js如何保持页面加载之间的连接,javascript,node.js,Javascript,Node.js,在我的网站上,我有一个所有在线用户的列表,由node.js实时更新(我正在使用now.js) 问题是,当用户浏览我的站点时,当加载新页面时,他们当然会断开连接几秒钟。这意味着它们将从所有其他客户端的列表中消失,并在几秒钟后弹出 是否有任何方法可以设置断开功能的超时,例如,如果用户在30秒内未重新连接,请从列表中删除,否则不要 或者是否有更好的方法来实现这一点?有人能给我指一下正确的方向吗:) 编辑: 如果有人想知道的话,我提出了一个有效的解决方案。在服务器端,我有这个功能 nowjs.on('d

在我的网站上,我有一个所有在线用户的列表,由node.js实时更新(我正在使用now.js)

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

是否有任何方法可以设置断开功能的超时,例如,如果用户在30秒内未重新连接,请从列表中删除,否则不要

或者是否有更好的方法来实现这一点?有人能给我指一下正确的方向吗:)

编辑:

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

nowjs.on('disconnect', function() {
    everyone.now.clientDisconnected();
});
每当用户断开连接时,在客户端上调用此函数

now.clientDisconnected = function() {
    setTimeout(function() { now.serverUpdateUsers(); }, 20000);
}
因此,我们不是立即更新用户,而是等待20秒。到那时,用户应该已经完成了新页面的加载,所有其他客户端都不会显示任何差异


serverUpdateUsers()
是一个服务器端函数,用于收集所有用户数据并将其发送到所有客户端。

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


心跳间隔默认为20秒

是的,也许是个好主意。。但我真的不知道他们是如何互动的。在上面提出了一个简单的解决方案。。。也许不是最优的,但它是有效的