【问题标题】:Node.js how to keep connection between page loadsNode.js如何保持页面加载之间的连接
【发布时间】: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


    【解决方案1】:

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

    https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

    心跳间隔默认为 20 秒

    【讨论】:

    • 是的,也许是个好主意。但我真的不知道它们是如何交互的。在上面想出了一个简单的解决方案......也许不是最佳的,但它有效
    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多