2013-12-23 89 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