本文主要介紹在 .NET 中使用 SSE 實現即時通訊。
在 JavaScript 中,常見的即時通訊方式有以下三種作法:
Polling:Client 定期向 Server 發送請求,進行資料請求和回應。這種方式常常會導致過多的請求和回應,佔用大量資源。
Server-Sent-Events(SSE):一種單向連線,由 Server 向 Client 推送更新資料。此種方式有以下優點:單向連線,可降低伺服器負擔,只有一個TCP連線,減少頻寬浪費。
WebSocket:Client 與 Server 之間建立雙向連線,雙方可隨時傳送資料。WebSocket 可以減少網路流量,提高效率。
SSE 預設有 open
、error
和 message
三個事件,以下是一個簡單的 JavaScript 範例:
withCredentials
屬性在建立 Server-Sent Events(SSE)物件時,可以使用 withCredentials
屬性指定當發送跨域請求時,是否要傳送 CORS 驗證資訊,此屬性在同源網站的情況下並無作用。
SSE 使用跨域請求時,Server 端的 Header 也需要進行相應的 CORS 設定。
text/event-stream
。ASHX 是 ASP.NET Web Forms 的一個特性,可以簡單地處理 Web 請求。在 SSE 的應用中,可以使用 ASHX 來處理 SSE 的請求。以下是一個簡單的 ASHX 程式碼範例:
每條訊息以空行作結束,所以第一個 \n
表示訊息換行,第二個 \n
以示訊息結束。
.NET
Server-Sent-Events