是什麼?簡單來說,ASP.NET SignalR是一個開源的實時通訊(real-time)庫,有了ASP.NET SignalR,我們可以在詳細介紹參考:https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/... ...
是什麼?
簡單來說,ASP.NET SignalR是一個開源的實時通訊(real-time)庫,有了ASP.NET SignalR,我們可以在
應用場景
從介紹可以看出,ASP.NET SignalR是為實時通訊而生的,所以典型的應用場景有:
環境要求
一,伺服器端
1,操作系統
註意:如果要使用WebSockets,要求操作系統Windows Server 2012+。
2,.net framework
支持.net framework 4.5+。
3,IIS
IIS 7+並且需要集成模式。
二,客戶端
1,操作系統
客戶端支持的操作系統為Windows 7+。
2,瀏覽器
註意:jQuery的版本必須>=1.6.4。
原理
1,客戶端和服務端的交互如下圖:
2,ASP.NET SignalR的架構圖:
傳輸協議的協商
預設情況下,SignalR會自動協商傳輸協議,協商的過程如下:
如果瀏覽器是Internet Explorer 8或更早版本,則使用長輪詢。
如果配置了JSONP(即,在啟動連接時將jsonp
參數設置為true
),則使用長輪詢。
如果正在建立跨域連接(即,如果SignalR端點與托管頁面不在同一個域中),則在滿足以下條件時將使用WebSocket:
客戶端支持CORS(跨源資源共用)。有關哪些客戶端支持CORS的詳細信息,請參閱caniuse.com上的CORS。
客戶端支持WebSocket
伺服器支持WebSocket
如果不滿足任何這些標準,將使用長輪詢。有關跨域連接的詳細信息,請參閱如何建立跨域連接。
如果未配置JSONP且連接不是跨域連接,則如果客戶端和伺服器都支持,則將使用WebSocket。
如果客戶端或伺服器不支持WebSocket,則使用Server Sent Events(如果可用)。
如果“伺服器已發送事件”不可用,則嘗試使用“永久幀”。
如果Forever Frame失敗,則使用長輪詢。
入門Demo
源代碼地址:https://github.com/mcgrady525/GettingStarted.SignalR