我有這種情況: 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:看看參考文獻 –