ASP.NET MVC + SignalR實現簡單聊天室


ASP.NET SignalR 是為 ASP.NET 開發人員提供的一個庫,可以簡化開發人員將實時 Web 功能添加到應用程序的過程。實時 Web 功能是指這樣一種功能:當所連接的客戶端變得可用時服務器代碼可以立即向其推送內容,而不是讓服務器等待客戶端請求新的數據。SignalR 是一個集成的客戶端與服務器庫,基於瀏覽器的客戶端和基於 ASP.NET 的服務器組件可以借助它來進行雙向多步對話。 換句話說,該對話可不受限制地進行單個無狀態請求/響應數據交換;它將繼續,直到明確關閉。 對話通過永久連接進行,允許客戶端向服務器發送多個消息,並允許服務器做出相應答復,值得注意的是,還允許服務器向客戶端發送異步消息。

SignalR演示圖

SignalR演示圖

SignalR官網介紹:http://www.asp.net/signalr

本項目實際效果示例:http://signalrchats.azurewebsites.net/

接下來會通過上面的項目依次講解。

首先創建一個ASP.NET MVC空項目SignalRDemo,使用Nuget工具引入SignalR的包。文中頁面用到bootstrap所以引用相應的包,沒用到的無需引用。

在項目中新建一個Hubs文件夾用來放Hub集線器,在Hubs文件夾中新建一個SignalR集線器。命名MyHub如圖

20160130211659

一下為MyHub中的主要代碼:

20160130212534

然后在項目中添加Startup類,命名為Startup,加入代碼

//注冊所有signal集線器
app.MapSignalR();

20160130212905

注意,startup類一定要命名為Startup,一定要加入集線器注冊代碼,不然無法使用

添加HomeController,在Index頁面輸入一下代碼:

首先引入必要文件

20160130213433

注意,紅框標記出的 <script src=”~/signalr/hubs”></script>固定格式插入,因為注冊的hub集線器會在項目中添加一個js文件,在瀏覽器中輸入yourdomain/signalr/hubs即可看到(yourdomain為你的域名)。

20160130213922

主要js代碼:

20160130214136

注意,一定要有connection.hub.start()方法用來啟動集線器

 

具體運行效果在http://signalrchats.azurewebsites.net/

同一台電腦可開不同瀏覽器嘗試,移動設備也能訪問


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM