ASP.NET SignalR 是為 ASP.NET 開發人員提供的一個庫,可以簡化開發人員將實時 Web 功能添加到應用程序的過程。實時 Web 功能是指這樣一種功能:當所連接的客戶端變得可用時服務器代碼可以立即向其推送內容,而不是讓服務器等待客戶端請求新的數據。SignalR 是一個集成的客戶端與服務器庫,基於瀏覽器的客戶端和基於 ASP.NET 的服務器組件可以借助它來進行雙向多步對話。 換句話說,該對話可不受限制地進行單個無狀態請求/響應數據交換;它將繼續,直到明確關閉。 對話通過永久連接進行,允許客戶端向服務器發送多個消息,並允許服務器做出相應答復,值得注意的是,還允許服務器向客戶端發送異步消息。
SignalR演示圖
SignalR官網介紹:http://www.asp.net/signalr
本項目實際效果示例:http://signalrchats.azurewebsites.net/
接下來會通過上面的項目依次講解。
首先創建一個ASP.NET MVC空項目SignalRDemo,使用Nuget工具引入SignalR的包。文中頁面用到bootstrap所以引用相應的包,沒用到的無需引用。
在項目中新建一個Hubs文件夾用來放Hub集線器,在Hubs文件夾中新建一個SignalR集線器。命名MyHub如圖
一下為MyHub中的主要代碼:
然后在項目中添加Startup類,命名為Startup,加入代碼
//注冊所有signal集線器
app.MapSignalR();
注意,startup類一定要命名為Startup,一定要加入集線器注冊代碼,不然無法使用
添加HomeController,在Index頁面輸入一下代碼:
首先引入必要文件
注意,紅框標記出的 <script src=”~/signalr/hubs”></script>固定格式插入,因為注冊的hub集線器會在項目中添加一個js文件,在瀏覽器中輸入yourdomain/signalr/hubs即可看到(yourdomain為你的域名)。
主要js代碼:
注意,一定要有connection.hub.start()方法用來啟動集線器
具體運行效果在http://signalrchats.azurewebsites.net/
同一台電腦可開不同瀏覽器嘗試,移動設備也能訪問






