說明: 在webapi中使用signalr,使用IIS
環境: vs2012, .net4.5 ?
第一步:建web api項目
? ??
第二步:nuget導入signalr
? ??
? ?
? ?Install-Package Microsoft.AspNet.SignalR
Install-Package Microsoft.Owin.Cors? (用于跨域)
第三步:創建hub類
? ? ??
? ? ? demo是從網上down的,去除了一些沒用到的東西,只保留了MessageHub
?
第四步:創建Startup類
? ? ? ?
第五步:在webapi方法中調用推送
? ? ? ??
? ? ?
? ? ? Clients.All 會給所有客戶端推送, hub.Clients.All.showMessage()意思是調用所有連接的客戶端的showMessage方法。
說明:如果想給指定的人推送,要先獲得指定連接的ConnectionId, 通過
hub.Clients.Clients(iList<string> list).showMessage 來調用,? 這里的list是ConnectionId集合。
注1:showMessage這個方法名是自定義的,只要與前端一致即可。
注2:后面會說怎么給指定人推送消息。?
至此,signalr在webapi的代碼已經完成。將其放到iis里。注意應用程序池的.net版本。
IIS綁定的9999端口,所以網址就是? http://localhost:9999
?
第六步:編寫接收推送消息的web端A
? ? ?建一個web程序,這里只建了一個webform程序。在nuget中導入signalR
? ? ?
? ? ??
這里的地址的前半段就是iis綁定的地址。
$.connection.messageHub, 這個messageHub首字母要小寫。
hub.client.showMessage,對應webapi里的調用。
jQuery.support.cors=true, 主要針對IE8,9跨越(本人并未驗證)
? ? ? 補充:?
? ? ? ? $.connection.hub.disconnected(function (e) {
? ? ? ? ? ? ?console.log("斷開連接"); //這里添加斷開連接的處理方法
? ? ? ? });
? ? ? ?//如果斷開連接,會自動重連10次,10次都失敗,會觸發disconnected方法
第七步:使用app或者其他端調用webapi里的方法, web端A推送消息
? ? ??這里就不用app了,用一個web頁面來代替app調用。具體如下:
? ? ?
? ? END:一個簡單的demo完成了。
? ??
? ? 最后:如何推送給指定用戶。
? ? ? ? 向指定用戶推送,要用到connetionid 。
? ? ? ? 在MessageHub類里添加一個SendLogin方法:
? ? ? ?
這是網上找到demo, 后期考慮把 name和connetionid關系存到數據庫中。
? 接收推送端:注意首字母小寫
? ? ? ?
? ? ?
Webapi方法里:
? ? ? ? ?
? ? ? ?
?
? ? ? ?參考博客:
? ? ? ? ? ?http://blog.csdn.net/a1002308667/article/details/51205513
? ? ? ? ? ?http://www.cnblogs.com/humble/p/3856357.html
? ? ? ? ? ?http://www.cnblogs.com/landeanfen/p/5177176.html
? ? ? ? ? ?等等
?
作者:Knightly
原文地址:https://www.cnblogs.com/lanshanke/p/6604568.html