说明: 在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的更多相关文章

  1. 【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 ...

  2. 如何在ASP.NET Core Web API中使用Mini Profiler

    原文如何在ASP.NET Core Web API中使用Mini Profiler 由Anuraj发表于2019年11月25日星期一阅读时间:1分钟 ASPNETCoreMiniProfiler 这篇 ...

  3. [译]如何在Web开发中使用Python

    [译]如何在Web开发中使用Python 原文:HOWTO Use Python in the Web 摘要 这篇文档展示了Python如何融入到web中.它介绍了几种Python结合web服务器的方 ...

  4. 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持

    HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...

  5. 在asp.net web api中利用过滤器设置输出缓存

    介绍 本文将介绍如何在asp.net web api中利用过滤器属性实现缓存. 实现过程 1,首先在web.config文件下appsettings下定义“CacheEnabled”和“CacheTi ...

  6. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

    在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...

  7. Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

    9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...

  8. ASP.NET Web API中的Controller

    虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要 ...

  9. Web APi 2.0优点和特点?在Web APi中如何启动Session状态?

    前言 曾几何时,微软基于Web服务技术给出最流行的基于XML且以扩展名为.asmx结尾的Web Service,此服务在.NET Framework中风靡一时同时也被.NET业界同仁所青睐,几年后在此 ...

随机推荐

  1. EFCore中SQLSERVER 2008 的分页问题

    自SQLSERVER 2012起新增了 Offset Fetch 语法,因此EFCore默认是以此语法生成相应的分页语句的. 如果我们的目标数据库低于 2012,那么EFCore默认生成的语句在执行的 ...

  2. Java中的StringTokenizer类的使用方法

    StringTokenizer是字符串分隔解析类型,属于:java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析 ...

  3. python selenium模拟登录163邮箱和QQ空间

    最近在看python网络爬虫,于是我想自己写一个邮箱和QQ空间的自动登录的小程序, 下面以登录163邮箱和QQ空间和为例: 了解到在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用, ...

  4. .Net WebRequest异步请求与WebClient异步请求

    很多情况下一般会使用同步方式发出请求,直到响应后再做后续的逻辑处理等,但有时候后续的逻辑处理不依赖于请求的结果或者是可以挂起等到响应后再处理,又或者是为了解决UI“假死”的现象,这时可以使用异步请求 ...

  5. centos7 安装ldap

    ldap首先我们要知道这个ldap的概念, LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写 目录是一个为查询.浏览和搜索而优化的专业分布 ...

  6. 了解注解及java提供的几个基本注解

    先通过@SuppreessWarnings的应用让大家直观地了解注解: 通过System.runFinalizersOnExit(true);的编译器警告引出           @SuppressW ...

  7. Python学习(七)面向对象 ——继承和多态

    Python 类的继承和多态 Python 类的继承 在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新 ...

  8. JVM各垃圾收集器对比

    本随笔是<深入理解Java虚拟机 JVM高级特性与最佳实践>读书笔记. 1.JDK1.7之后的HotSpot虚拟机所包含的所有收集器如下: 解读: 1. 总共有7种垃圾收集器 2.Seri ...

  9. AES块加密与解密

    AES块加密与解密 解密目标 在CBC和CTR两种模式下分别给出十篇加密的样例密文,求解密一篇特定的密文 解密前提 全部密文及其加密使用的key都已给出 加密的方法遵循AES的标准 解密过程分析 实验 ...

  10. leetcode16—3 Sum Closet

    Given an array nums of n integers and an integer target, find three integers in nums such that the s ...