1. 程式人生 > >紀實:即時通訊.net signalr初探索

紀實:即時通訊.net signalr初探索

需求:一個Android/IOS框架內嵌asp.net頁面的APP,需要做一個客戶與客服之間的即時通訊。

準備:一開始想用簡單websocket輪詢,N久之前做過但是不是很記得了,於是上網搜尋,無意中發現signalr,決定嘗試一下。

出了那麼久的東西,相信signalr的通訊原理,包括各種原始碼已經很多了,在此我就不再累贅了。在此主要記錄從初建到成功整個過程遇到的問題。

1.0 在vs2012下載整合signalr1.1.4。

由於專案是.net framework 4.0,signalr2.0需要4.5及以上。所以我直接準備下載1.1.4。下載的時候就遇到了問題。首先,如果直接在 工具-》擴充套件與更新 直接找signalr是找不到的。需要在 工具-》擴充套件 下載 NuGet Package Manager 。

下載後,點選工具-》庫程式包管理器-》管理解決方案的Nuget程式包。開啟之後你可能會發現這種情況:


或者是404,那是因為nuget地址配錯了。

解決方案:點選該彈出框左下角的設定-》包管理器-》程式包源,新新增一個地址:

我此次採用的是命令下載:


選擇對應的程式包源,選擇預設要整合的程式,在控制檯輸入: Install-Package Microsoft.AspNet.SignalR 1.1.4。回車,安裝完畢。(這裡遇到的麻煩主要是程式包源地址錯誤。。。)

2.0 開始編碼:只是為了理通,並沒有過多的做頁面。

2.1 首先遇到的第一個問題就是頁面js,引入了 signalr.js和~/signalr/hubs,然而還是報錯:$.connection.Send is undefined。除錯發現connection就直接找不到了。後來發現,是signalr.js和~/signalr/hubs的位置放的不對,直接丟到_Layout.cshtml上,問題解決。

3.0 跨域:客戶端的/signalr/hubs要改為對應伺服器的檔案。客戶端建立連線的時候要指定對應伺服器( $.connection.hub.url = "http://localhost:57214/signalr";)

總結:這個文章主要是針對自己遇到的一些問題的記錄,並不是完整的 紀實。