为所有在线用户刷新页面

Refresh page for all online users

当用户单击保存按钮时,我希望当前页面中的所有用户都得到通知,或者更好(或再三考虑更糟)强制刷新页面。

所以,我在我的脚本中尝试了这个:

function save_match() {
    ...
    alert("Saved slot " + slot + "! :)");
    window.location.reload();
}

但是刷新当然只发生在实际按下按钮的用户身上,其他用户不知道其他用户刚刚保存的内容。

强制重新加载页面似乎不太可能发生,那么通过 JavaScript 做一些事情来通知其他在线用户保存事件怎么样?

可能相关 question.


所以,我想要的是:

function save_match() {
    ...
    alert("Saved slot " + slot + "! :)");
    // do something here so that all online users are updated!!
}

您需要实施 Server Push。该技术有不同的工作策略,如 Long pooling、Heartbeat 和 WebSockets。检查出来。

编辑:确实可以使用所提到的任何策略。

对于长池,您向服务器发送请求并无限等待,直到服务器 'pushes' 返回任何更新(如果有)。 Check this post 看看如何使用 jQuery。

Heartbeat 是一种不同的且更耗费 newtork 的技术,您每 x 秒发送一次请求以查看服务器是否有任何更新,如果有,则更新您的数据。 Check this example 如何实现它。

在开始之前,您还可以查看如何实施 WebSockets javascript 应用程序 in the MDN but consider the browser support for this feature 的示例。