SignalR是一個實時通信的庫,它提供了多種傳輸方式和協議來實現實時通信。SignalR支持以下幾種傳輸方式和協議:
-
傳輸方式:
- 長輪詢(Long Polling):客戶端發送一個請求給服務器,服務器一直保持這個請求打開,直到有新消息到達或者超時,然后再返回給客戶端。這種方式適用于不支持WebSocket的環境。
- WebSocket:WebSocket是一種全雙工通信協議,它可以在客戶端和服務器之間建立一個持久性的連接,從而實現實時通信。WebSocket是SignalR默認的傳輸方式,如果瀏覽器支持WebSocket,SignalR會優先使用WebSocket進行通信。
-
自定義協議:
SignalR的自定義協議是建立在JSON和SignalR消息格式之上的。SignalR消息格式包括以下幾種消息類型:
- 連接消息(Connection Message):用于建立和維護連接的消息。
- 數據消息(Data Message):用于發送數據的消息。
- 心跳消息(Heartbeat Message):用于維持連接的消息。
- 關閉消息(Close Message):用于關閉連接的消息。
通過這些消息類型,SignalR實現了一個簡單的自定義協議,用于在客戶端和服務器之間進行實時通信。客戶端和服務器之間可以通過這些消息類型進行交互,實現實時數據交換和通信。