2017-05-01 24 views
1

我想創建一個頁面,允許IT人員從列表中選擇一些服務器,然後單擊去執行操作。然後讓頁面上的textarea更新每個操作的狀態並完成。每個服務器維護任務可能需要一兩分鐘的時間。他們希望在每個服務器完成所選任務時在頁面上看到更新。如何隨着服務器端任務的進展多次更新網頁?

不確定在前端使用哪種技術。後端根本不是問題。我可以輕鬆地獲取服務器的完整列表,然後在每臺服務器上執行操作,然後返回完整列表以及每臺服務器的結果。但是,沒有人希望在獲取更新之前等待所有服務器完成。

通常我會使用ajax來更新頁面的一部分,但這只是一個單一的調用/響應。我想如果我使用JavaScript循環通過ajax爲每個服務器調用一個php腳本,那麼JavaScript循環會阻止UI更新,直到javascript函數完成。

任何想法?

+0

您可以使用'EventSource'將數據傳輸到瀏覽器。請參閱http://stackoverflow.com/questions/42512572/how-to-send-xmlhttprequest-continuously-in-webworker/42513099?s=2|0.0000#42513099,http://stackoverflow.com/questions/42475492/how to-read-and-echo-file-size-of-uploaded-file-being-written-at-server-in-real?s = 5 | 0.0000 – guest271314

+0

我認爲EventSource方法用於進行相同的調用一遍又一遍地傳遞服務器(傳遞相同的參數)以獲取更新的內容。我看到的大多數例子都是爲了獲得服務器的日期/時間。在這個用例中,IT人員會進入頁面,選擇一些服務器併發出一個請求來處理整個列表(一次)。 – Mike

+0

您可以使用'Promise.all()'處理一組異步函數,並在所有Promise通過時都返回響應數組,或者調用或完成函數。請參閱http://stackoverflow.com/questions/42180299/how-to-use-promise-all-after-promises-created-in-for-loop/42180380#42180380 – guest271314

回答

0

您可以使用這兩種技術。

1- WebSocket的https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications

2-推送通知https://developers.google.com/web/fundamentals/engage-and-retain/push-notifications/

在WebSocket的瀏覽器選項卡具有保持開放。不推送通知。 Websocket支持多種瀏覽器,推送通知只有鉻和鉻。

+0

1.我得再看看這個。這個主機所在的站點是Linux/Apache/PHP 5.4,所以不確定開箱即可支持什麼或者我可以升級什麼。只支持Desktop/Chrome很好。 – Mike

+0

2.僅針對移動應用推送?這裏的用例將是一個瀏覽器選項卡,直到所有服務器完成任務 – Mike

相關問題