我遇到这种情况: 100台计算机正在显示一个网页,从后端我可以更新此网页。
我希望我的100台计算机上显示的网页会自动更新。
有没有办法刷新/更新页面而不进行轮询? 外部页面可以强制页面重新加载的最佳方式,但我认为这是不可能的。
由于
微米。
答案 0 :(得分:1)
在最近的浏览器中,有一个websockets的实现,允许服务器将数据推送到客户端。它只适用于某些Web服务器(tomcat 7,node.js等...) Websocket规范是here。
另一种方法是客户端启动http请求的长请求,服务器只有在有东西要发送给客户端时才会回答。
更多信息here。
答案 1 :(得分:0)
您可以定义到服务器的路由,该路由返回true或false,具体取决于是否需要刷新。然后你会在客户端做:
function checkReload() {
$.ajax({
url: "127.0.0.1/needRefresh",
success: function(data) {
if (data == "true")
location.reload();
else
setTimeout(checkReload, 1000);
}
});
}
setTimeout(checkReload, 1000);
这段代码的作用是每秒(setTimeout函数),它用ajax查询服务器,知道是否需要重新加载页面,然后重新加载或不重新加载,具体取决于服务器的响应。
答案 2 :(得分:0)
您可以使用WebSockets。例如:
var socket = new WebSocket("ws://javascript.ru/ws");
socket.onmessage = function(event) {
if (event.data == "reload") {
location.reload();
}
};
使用WebSockets,您还可以组织从其中一个页面重新加载所有页面并传播事件。
WebSockets实现了一个事件驱动的架构。您将为事件和消息实现一些处理程序,然后启动它。然后,您可以通过服务器从服务器或其他页面发送事件,并根据需要进行处理。
答案 3 :(得分:-1)
使用Javascript:否。
使用任何服务器端语言:是。您始终拥有使用 CRON 或投票的特权。
参见:Is "long polling" the most efficient way to create a Web Real Time App?