2013-12-23 58 views
0

我有这种情况: 100台计算机正在显示一个网页,并从后端我可以更新此网页。强制从外部页面刷新网页

我希望我的100台电脑上显示的网页自动更新。

有没有办法刷新/更新页面而无需轮询? 最好的办法是外部页面可以强制页面重新加载,但我认为这不是可能的。

感谢

M.

回答

0

你可以定义一个路由到您的服务器返回根据需要刷新或不真或假。然后,您会做客户端:

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服务器知道是否需要重新加载页面,然后重新加载或不依赖于服务器的响应。

+0

从来没有用户设置的时间间隔......这也是间隔一秒..你会杀死浏览器。使用设置超时代替 –

+0

为什么不使用setInterval? setTimeout并不是一个好的选择,如果你在setTimeout里面设置Timeout的话...... witch是基本的setInterval ...另外,一秒钟的超时只是举例。 – EoiFirst

+0

没有你得到它完全错误..你应该了解setTimeout的基本性质和间隔... setInterval排队输出不论第一个请求是完全结束..setTimeout是一个很好的工具,在这个角度..只需在最后调用相同的函数作为回调。 –

0

您可以使用WebSockets。例如:

var socket = new WebSocket("ws://javascript.ru/ws"); 
socket.onmessage = function(event) { 
    if (event.data == "reload") { 
     location.reload(); 
    } 
}; 

使用WebSockets,你还可以组织从这个网页与事件的传播一个重装所有页面。

WebSockets实现了一个事件驱动的体系结构。你将实现一些处理事件和消息的处理程序,并启动它。然后,您可以通过服务器从服务器或其他页面发送事件,并根据需要进行处理。

+0

谢谢Alexey ... – user3129728

1

在最近的浏览器上,有一个websockets的实现,它允许服务器将数据推送到客户端。它只适用于一些网络服务器(tomcat 7,node.js等)。 Websocket规范是here

另一种方法是客户端启动一个http请求的长时间请求,服务器只有在它有东西要发送给客户端时才会回答。

更多信息here