如何在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的更多相关文章
- 【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie
原文:[ASP.NET Web API教程]5.5 ASP.NET Web API中的HTTP Cookie 5.5 HTTP Cookies in ASP.NET Web API 5.5 ASP.N ...
- 如何在ASP.NET Core Web API中使用Mini Profiler
原文如何在ASP.NET Core Web API中使用Mini Profiler 由Anuraj发表于2019年11月25日星期一阅读时间:1分钟 ASPNETCoreMiniProfiler 这篇 ...
- [译]如何在Web开发中使用Python
[译]如何在Web开发中使用Python 原文:HOWTO Use Python in the Web 摘要 这篇文档展示了Python如何融入到web中.它介绍了几种Python结合web服务器的方 ...
- 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...
- 在asp.net web api中利用过滤器设置输出缓存
介绍 本文将介绍如何在asp.net web api中利用过滤器属性实现缓存. 实现过程 1,首先在web.config文件下appsettings下定义“CacheEnabled”和“CacheTi ...
- 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务
在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...
- Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化
9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...
- ASP.NET Web API中的Controller
虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要 ...
- Web APi 2.0优点和特点?在Web APi中如何启动Session状态?
前言 曾几何时,微软基于Web服务技术给出最流行的基于XML且以扩展名为.asmx结尾的Web Service,此服务在.NET Framework中风靡一时同时也被.NET业界同仁所青睐,几年后在此 ...
随机推荐
- LeetCode题解之 Reverse Only Letters
1.题目描述 2.题目描述 利用栈实现逆序. 3.代码 string reverseOnlyLetters(string S) { || S.size() == ) return S; stack&l ...
- VMware部署ubuntu后开机提示piix4_smbus: Host SMBus controller not enabled!
在虚拟机部署ubuntu10.04-server,每次启动完成之后,出现“piix4_smbus0000:00:07.3: Host SMBus controller not enabled!”提示信 ...
- python基础知识回顾之列表
在python 中,主要的常用数据类型有列表,元组,字典,集合,字符串.对于这些基础知识,应该要能够足够熟练掌握. 如何创建列表: # 创建一个空列表:定义一个变量,然后在等号右边放一个中括号,就创建 ...
- 一起学习Boost标准库--Boost.StringAlgorithms库
概述 在未使用Boost库时,使用STL的std::string处理一些字符串时,总是不顺手,特别是当用了C#/Python等语言后trim/split总要封装一个方法来处理.如果没有形成自己的com ...
- 不使用 vue-cli 与 vue 模版,使用 Vue2.x + webpack4.x 从零开始一步步搭建项目框架
说明 这是我根据慕课网上的一个课程 Vue+Webpack打造todo应用 过程一步步搭下来的框架,去掉了业务相关的逻辑. 项目最终的效果包括了引入vue框架:使用CSS预处理器:使用babel:引用 ...
- Hadoop HBase概念学习系列之HBase里的HRegion(五)
首先,要区分,HRegion服务器包含两大部分:HLog部分和HRegion部分 HBase里的HRegion服务器 HBase里的HRegion 当表的大小超过设置值的时候,HBase会自动将表划 ...
- Python中日期时间案例演示
案例:准备10个人姓名,然后为这10个人随机生成生日[都是90后] 1.统计出那些人是夏季[6月-8月]出生的. 2.最大的比最小的大多少天 3.谁的生日最早,谁的生日最晚 备注:春季[3-5]夏季[ ...
- Servlet 核心接口
在Servlet体系结构中,除了用于实现Servlet的Servlet接口.GenericServlet类和HttpServlet类外,还有一些辅助Servlet获取相关资源信息的重要接口,了解这些接 ...
- JAVA随机数之多种方法从给定范围内随机N个不重复数
一.JAVA中生成随机数的方式 1.在j2se中使用Math.random()令系统随机选取一个0~1之间的double类型小数,将其乘以一个数,比如25,就能得到一个0~25范围内的随机数,这个在j ...
- 树莓派3B+ wifi 5G连接
新烧的Raspbian 系统,一开始需要设置wifi的一些配置,其中会选择一个国家(set country),一开始选择的是CN(中国),发现只能连接2.4G的网络,5G的网络连接不上,这很奇怪, 因 ...