一次HTTP請求,如何將內(nèi)容拆分,多次推送到客戶端
這個需求WebSocket也能實現(xiàn),但今天介紹另一種方案: Server-Sent Events
Server-Sent Events(SSE)是一種在Web瀏覽器和Web服務(wù)器之間啟用單向、實時通信的技術(shù)。它允許服務(wù)器發(fā)送異步事件流到客戶端的Web瀏覽器,以便實時更新Web頁面中的內(nèi)容,而不需要客戶端不斷地輪詢服務(wù)器以獲取最新的信息。 SSE是一種基于HTTP協(xié)議以及HTML5的瀏覽器API的技術(shù)。與類似的Ajax和WebSocket不同,SSE是一種完全由瀏覽器處理的技術(shù),無需使用JavaScript代碼輪詢服務(wù)器,也不需要客戶端和服務(wù)端之間的全雙工通信。 使用SSE,服務(wù)器會保持一個持久的HTTP連接開放,通過這個連接向客戶端發(fā)送事件信息。這些事件可以是JSON、XML或簡單文本等多種數(shù)據(jù)格式。一旦客戶端建立了連接,事件流將由瀏覽器自動處理,并可在JavaScript中進行監(jiān)聽和處理。 SSE通常用于實時更新網(wǎng)頁內(nèi)容,如推送新聞、股市報價、即時通訊應(yīng)用等場景。 客戶端示例
當(dāng)使用Server-Sent Events時,客戶端(即瀏覽器)會向服務(wù)器發(fā)送一個長時間的HTTP請求,以相同的方式發(fā)送一個HTTP響應(yīng)。以下是一個基本的JavaScript代碼示例,演示如何使用SSE與服務(wù)器通信并接收事件流:
服務(wù)端
以下是一個基本的Node.js后端代碼示例,用于處理HTTP請求并返回響應(yīng):
標(biāo)簽: