刷新所有联机用户的页面

Refresh page for all online users

本文关键字:用户 联机 刷新      更新时间:2023-09-26

当用户单击保存按钮时,我希望通知当前页面中的所有用户,甚至更好(或更糟)强制页面刷新。

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

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

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

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

可能的相关问题。


所以,我想要的是:

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

您需要实现服务器推送。该技术具有不同的工作策略,如长池,心跳和WebSockets。看看他们。

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

对于长池化,您向服务器发送请求并独立等待,直到服务器"推回"任何更新(如果有)。查看这篇文章,了解如何使用 jQuery 进行操作。

Heartbeat 是一种不同的、更耗费 newtork 的技术,其中您每 x 秒发送一次请求以查看服务器是否有任何更新,如果有,则更新数据。查看此示例,了解如何实现它。

您还可以看到如何在 MDN 中实现 WebSockets javascript 应用程序的示例,但在开始使用此功能之前请考虑浏览器对此功能的支持。