我有这种情况: 100台计算机正在显示一个网页,并从后端我可以更新此网页。强制从外部页面刷新网页
我希望我的100台电脑上显示的网页自动更新。
有没有办法刷新/更新页面而无需轮询? 最好的办法是外部页面可以强制页面重新加载,但我认为这不是可能的。
感谢
M.
我有这种情况: 100台计算机正在显示一个网页,并从后端我可以更新此网页。强制从外部页面刷新网页
我希望我的100台电脑上显示的网页自动更新。
有没有办法刷新/更新页面而无需轮询? 最好的办法是外部页面可以强制页面重新加载,但我认为这不是可能的。
感谢
M.
使用javascript:第
与任何服务器端语言:yes.You总是使用CRON或轮询的的privilages。
参见:Is "long polling" the most efficient way to create a Web Real Time App?
你可以定义一个路由到您的服务器返回根据需要刷新或不真或假。然后,您会做客户端:
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服务器知道是否需要重新加载页面,然后重新加载或不依赖于服务器的响应。
从来没有用户设置的时间间隔......这也是间隔一秒..你会杀死浏览器。使用设置超时代替 –
为什么不使用setInterval? setTimeout并不是一个好的选择,如果你在setTimeout里面设置Timeout的话...... witch是基本的setInterval ...另外,一秒钟的超时只是举例。 – EoiFirst
没有你得到它完全错误..你应该了解setTimeout的基本性质和间隔... setInterval排队输出不论第一个请求是完全结束..setTimeout是一个很好的工具,在这个角度..只需在最后调用相同的函数作为回调。 –
您可以使用WebSockets。例如:
var socket = new WebSocket("ws://javascript.ru/ws");
socket.onmessage = function(event) {
if (event.data == "reload") {
location.reload();
}
};
使用WebSockets,你还可以组织从这个网页与事件的传播一个重装所有页面。
WebSockets实现了一个事件驱动的体系结构。你将实现一些处理事件和消息的处理程序,并启动它。然后,您可以通过服务器从服务器或其他页面发送事件,并根据需要进行处理。
谢谢Alexey ... – user3129728
好的,没有JS! :) ...我正在寻找更少的资源消耗的解决方案,但也许投票是唯一的一个... – user3129728
正是我的观点.. –
@ user3129728:看看参考文献 –