天天看點

Asp.Net SignalR - 持久連接配接類持久連接配接類

通過SignalR持久連接配接類可以快速的建構一個即時通訊的應用,上篇博文已經我們建立一個owin Startup類和一個持久連接配接類來完成我們的工作,然後在Startup類的Configuration方法中添加了我們的中間件,配置名稱 myconnection1

Asp.Net SignalR - 持久連接配接類持久連接配接類

簡單看一下持久連接配接類,裡面有四個可供我們重寫的方法,從字面上就可以看出是什麼意思,需要一提的是持久連接配接類是享元模式的實踐,因為一個用戶端和伺服器的連接配接過程中隻會建立一個對象,後面都不會再建立對象。

Asp.Net SignalR - 持久連接配接類持久連接配接類

在調試視窗也可以看到我們的WriteLine資訊

Asp.Net SignalR - 持久連接配接類持久連接配接類

下面需要說一下兩個參數

request connectionid

connectionId是一個類似GUID一樣的唯一辨別,一個用戶端的連接配接會有一個這樣的連接配接Id

Request則是一些浏覽器發來的封包以及一些其它的資訊

Asp.Net SignalR - 持久連接配接類持久連接配接類

下面可以看深入一下持久連接配接類的源碼,可以看到參數 environment 是一個字典,這是owin的規範

最後會走到這個方法到達我們的OnConnected事件裡

上面過多關注了伺服器這邊的配置,是時候把注意力轉移到前端代碼上

start方法是異步的,也就如果調用了start方法後立即去發送 msg 可能是會出錯的,因為那時候可能還沒有連接配接,在start方法裡再進行我們的send是不錯的選擇。

received方法,這似乎沒有什麼好說的,,,是以就不說了

和伺服器端類似,需要我們關于的也僅是這些方法,相信這是很容易去了解的

Asp.Net SignalR - 持久連接配接類持久連接配接類

關于跨域

現在跨域請求越來越多的場景裡被使用,現在的主流方案有 JSONP和CORS,對于signalR也是對這兩種方式進行了封裝,根據目前浏覽器的情況進行最佳選擇

配置也是非常簡單的,但是對于CORS 需要使用nuget下載下傳Microsoft.Owin.Cors包,當然除了這些設定外還需要在headers中進行添加封包

繼續閱讀