實時通訊系列目錄篇之SignalR詳解

weixin_34361881發表於2018-07-22

一. 簡單說幾句

  最早使用SignalR的時候大約是兩年前了,記得當時是一個OA中訊息的實時提醒,輪詢的方式有點耗資源,WebSocket寫起來又比較麻煩,最終選擇了SignalR,當時是什麼版本已經記不清了,反正現在最新的是2.3.0(這裡指 .Net FrameWork下,而非Core下),這期間又陸續的在幾個專案中用到SignalR,感覺還不錯,使用起來也比較便捷,直到今年6月份,再次接到一個OA專案,需要用到SignalR,也是藉著這次機會把自己這期間的研究的一些東西和朋友們分享一下,也希望得到朋友們在使用上的一些建議。
  這次寫這個系列,是最後做的這個目錄,原計劃兩個周寫完,但計劃終究趕不上變化,到今天為止,已經三個多周,但前面的六篇文章已經告一段路,這期間,不少朋友建議我使用.Net Core下的SignalR,我粗略的看了看,Core下的SignalR在使用上差別不是太大,這裡也是個人的精力和能力有限,在每天七個半小時工作之外,儘可能的去做一些更有意思的事,Core下的SignalR也在後面的計劃中,屆時還希望朋友們多多支援。
  該系列後面的計劃:
    ①:結合業務整合個完整的案例進去。
    ②:詳細研究研究Core下的SignalR。
GitHub地址:https://github.com/SignalR/SignalR

    

二. 整體介紹

   該系列從原生Websocket說起,然後進行Signalr的基本介紹,然後PersistentConnection模式,然後介紹Signalr的靈魂Hub模型以及一些零散知識點,最後以SignalR的一種分散式部署方案結束該系列。

  作為目錄篇,這裡還是有必要再囉嗦一些什麼是SignalR了,看過我之前文章的朋友們可以直接跳過了。

  SignalR是微軟的一個開源專案,為客戶端和伺服器端實時通訊的問題提供了很好的解決方案,通過簡單的配置和API呼叫,即可完成相應的通訊功能的開發。

  SignalR對目前為止幾類主流的傳輸協議進行了封裝,讓瀏覽器自行選擇可以相容的版本(當然也可以自行指定),這樣就解決了開發者使用原生WebSocket時候的痛點了。

SignalR大一統:

  它封裝了 WebSocket、ForeverFrame、ServerSentEvents、LongPolling四種主要的傳輸協議。

  ① WebSocket:它是HTML5提供的一種在單個 TCP 連線上進行全雙工通訊的協議。

  ② ForeverFrame(永久幀):它適用於IE瀏覽器,是在頁面中插入一個隱藏的iframe,利用其src屬性在伺服器和客戶端之間建立一條長連結,伺服器向iframe傳輸資料(通常是HTML,內有負責插入資訊的javascript),來實時更新頁面。

  ③ SeverSentEvents(伺服器傳送事件,也成EventSourse):顧名思義。

  ④ longPolling(Ajax長輪詢):長輪詢是對輪詢的改進,客戶端通過請求連線到伺服器,並保持一段時間的連線狀態,直到訊息更新或超時才返回Response並中止連線,可以有效減少無效請求的次數。

 

三. 系列章節

   下面我們將通過以下幾個章節,系統的介紹一下SignalR中各種知識點,各種配置,由WebSocket原生寫法起,以一個聊天室案例為基礎,貫穿整個系列,歡迎廣大博友前來交流、指正、學習。

        第一節:.Net版基於WebSocket的聊天室樣例

        第二節. SignalR開篇以及如何指定傳輸協議

        第三節:SignalR之PersistentConnection模型詳解(步驟、用法、分組、跨域、第三方呼叫)

        第四節:SignalR靈魂所在Hub模型及再探聊天室樣例

        第五節:SignalR大雜燴(與MVC融合、全域性的幾個配置、跨域的應用、C/S程式充當Client和Server)

        第六節:SignalR完結篇之依賴注入和分散式部署

        第七節:敬請期待

        第八節:敬請期待

        第九節:敬請期待

 

 

 

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鵬飛)
  • 部落格地址 : http://www.cnblogs.com/yaopengfei/
  • 聲     明1 : 本人才疏學淺,用郭德綱的話說“我是一個小學生”,如有錯誤,歡迎討論,請勿謾罵^_^。
  • 聲     明2 : 原創部落格請在轉載時保留原文連結或在文章開頭加上本人部落格地址,否則保留追究法律責任的權利。
 

轉載於:https://www.cnblogs.com/yaopengfei/p/9351203.html

相關文章