如何在web api中使用SignalR
Posted Knightly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在web api中使用SignalR相关的知识,希望对你有一定的参考价值。
说明: 在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
等等
以上是关于如何在web api中使用SignalR的主要内容,如果未能解决你的问题,请参考以下文章
支持 https 的 Owin 自托管控制台应用程序(无 Web api,无 SignalR)
Azure 移动服务 Web Api 上的 SignalR CORS
带有 Web API 延迟的 Android 推送通知和 SignalR 通知