[英]Send information from a server to a client
我正在尋找一種從服務器向客戶端發送信息的方法,例如歌曲或圖像。
說明:我想從服務器向下載HTML5應用程序的客戶端發送數據。
但是我不知道如何。 我知道我可以將php請求從客戶端發送到服務器,然后再回答,但是我如何在沒有客戶端請求的情況下從服務器發送一些請求。
謝謝。
您可能想嘗試服務器發送的事件或WebSockets:
http://www.html5rocks.com/zh-CN/tutorials/eventsource/basics/
http://www.html5rocks.com/zh-CN/tutorials/websockets/basics/
這些技術允許客戶端Web應用程序隨時保持開放狀態,以與服務器進行通信。 服務器發送的事件專門用於服務器到客戶端,而WebSockets可用於雙向通信。
添加到jokeyrhyme的答案...
您要異步將數據從服務器發送到客戶端。 這意味着客戶端不知道何時需要數據。 實際上,在當今的Web上,您可以選擇以下選項:
由於這些技術已經存在了很長時間,因此更好地理解了第一種選擇。
WebSocket較新,但它是更好的解決方案,因為它緩解了輪詢,長時間輪詢等困擾基於HTTP的技術的問題。對於小型應用程序或不頻繁輪詢的應用程序,您可以擺脫輪詢。 但是,當您想擴展規模時,這些解決方案就會遇到問題。
我不會理會SSE(服務器發送的事件),因為那幾乎是WebSocket的一個子集。 考慮使用SSE的任何人通常最終只會使用WebSocket,因為它的工作量幾乎相同,並且可以為您提供更多的服務(例如雙向交互)。
但是,WebSocket不會取代HTTP; 一個應用程序可以同時使用兩者。 使用正確的工具完成正確的工作。
對於您的情況,有一個具有WebSocket連接的客戶端。 然后,您的后端應用程序可以隨時(異步)通知客戶端有事情要做(例如,正如您在原始帖子中所說的,可以使用新的歌曲或圖像)。
盡管可以,但我不會打擾WebSocket連接發送歌曲或圖像。 取而代之的是,客戶端可以使用傳統的HTTP技術來獲取歌曲或圖像,該技術已被很好地理解並且擅長處理靜態內容。 例如,如果多個人正在下載同一文件(歌曲或圖像),則可以利用緩存。
因此,將要通過WebSocket下載的歌曲/圖像的ID或URL發送到客戶端。 然后通過HTTP獲取歌曲/圖像。
這是同時使用HTTP和WebSocket的示例。 WebSocket用於幾乎沒有帶寬消耗的高效異步交互,而HTTP用於高效地獲取靜態資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.