【发布时间】:2011-11-09 16:12:54
【问题描述】:
在我的网站上,我有一个所有在线用户的列表,由 node.js 实时更新(我正在使用 now.js)
问题是,当用户浏览我的网站时,他们当然会在新页面加载时断开连接几秒钟。这意味着它们会从所有其他客户端的列表中消失,并在几秒钟后弹出。
有没有办法在断开功能上设置超时,例如如果用户在 30 秒内没有重新连接,则从列表中删除,否则不要?
或者是否有更好的方法来实现这一点?有人可以指出我正确的方向吗:)
编辑:
想出了一个可行的解决方案,如果有人想知道的话。在服务器端我有这个功能
nowjs.on('disconnect', function() {
everyone.now.clientDisconnected();
});
每当用户断开连接时,都会在客户端调用此函数
now.clientDisconnected = function() {
setTimeout(function() { now.serverUpdateUsers(); }, 20000);
}
因此,我们不会立即更新用户,而是等待 20 秒。到那时,用户应该已经完成了新页面的加载,所有其他客户端都不会显示任何差异。
serverUpdateUsers(); 是服务器端函数,它收集所有用户数据并将其推送到所有客户端。
【问题讨论】:
标签: javascript node.js