簡體   English   中英

將信息從服務器發送到客戶端

[英]Send information from a server to a client

我正在尋找一種從服務器向客戶端發送信息的方法,例如歌曲或圖像。

說明:我想從服務器向下載HTML5應用程序的客戶端發送數據。

但是我不知道如何。 我知道我可以將php請求從客戶端發送到服務器,然后再回答,但是我如何在沒有客戶端請求的情況下從服務器發送一些請求。

謝謝。

您可能想嘗試服務器發送的事件或WebSockets:

這些技術允許客戶端Web應用程序隨時保持開放狀態,以與服務器進行通信。 服務器發送的事件專門用於服務器到客戶端,而WebSockets可用於雙向通信。

添加到jokeyrhyme的答案...

您要異步將數據從服務器發送到客戶端。 這意味着客戶端不知道何時需要數據。 實際上,在當今的Web上,您可以選擇以下選項:

  • 某種形式的輪詢,長時間輪詢,彗星等。
  • WebSocket

由於這些技術已經存在了很長時間,因此更好地理解了第一種選擇。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM