在做Web的時候經常會有用戶端和服務端實時通訊的需求,比如即時聊天等。目前實時通訊有很多種規範和實作方式,但是每一個對浏覽器的相容性或者性能都不是很完美。
目前主流的解決方案有
WebSocket 使用ws協定基于tcp SSE 訂閱伺服器事件方式 長連接配接 輪詢
而sigualR對這些都進行了封裝,使得我們不用去關心到底是什麼實作,是websocket還是sse,它會根據目前浏覽器的相容性來做做好的選擇。
建立一個owin的啟動類,然後添加一個signalR的永久連結類 起名為 MyConnetion1
在html中代碼也是非常簡單的
先不用管是做什麼,把連接配接的loggin設定為true,運作項目就可以看到如下的log資訊,可以明确的看到這裡使用的是WebSocket
可以看到之前的simple demo中建立了一個owin的起始類,這是owin是個什麼東西呢
owin是一個規範,下面引用的是部落格員dudu的圖與一些解釋
owin是針對 .net平台的開放web接口,owin就是.net web應用程式與web伺服器之間的接口。owin使得應用程式不依賴于web伺服器,它們通過接口來進行工作,而更換其它的web伺服器隻要符合 owin 接口的規範都是沒有問題的。
owin是典型的擴充卡模式
owin把Web應用的解決方案進行了分層
host 宿主 service 伺服器 伺服器可以是iis也以是其它的 Middleware 中間件, 中間件用來豐富service達到功能添加 application 應用
katana就是owin規範的實作,而.net的Mvc項目也已經實作了owin規範,是以那些噴.net不能跨平台的,都是to young。姿勢水準還需要提升啊。
Startup類是我們的owin入口點,我們可以在裡寫入代碼把中間件打入owin管道