說明: 在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
等等