SignalR 是簡化即時 Web 功能開發的 ASP.NET 類庫,核心能力是伺服器主動推送內容至用戶端,打破傳統請求-回應模式。
適用場景
- 聊天室、即時通訊
- 儀表板/監控系統即時更新
- 協作編輯(多人同時編輯文件)
- 作業進度即時顯示、即時表單
- 高頻率更新應用(即時遊戲、股票行情)
核心特性
- 簡易 RPC API:伺服器 .NET 代碼直接呼叫用戶端 JavaScript 函式
- 連線管理:連線/斷線事件、群組管理
- 廣播與單播:
Clients.All、Clients.Client(id)、Clients.Group(name)
- 持久連線:非傳統 HTTP 短連線,降低延遲
- 自動傳輸協商:優先 WebSocket,不支援自動降級(Long Polling、SSE、Forever Frame)
- 擴展性:支援 Service Bus、SQL Server、Redis 擴展至數萬用戶端

SignalR vs WebSocket
| 面向 | SignalR | 原生 WebSocket |
| 瀏覽器相容 | 自動降級支援舊瀏覽器 | 需自行實作降級 |
| 連線管理 | 內建重連、群組、狀態 | 自行實作 |
| 開發焦點 | 業務邏輯 | 基礎設施與相容性 |
| 版本演進 | 持續更新支援新協定 | 需自行追蹤 RFC 變更 |
SignalR 開源於 GitHub,歡迎貢獻與議題回報。