• 如何在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

               等等

           

       

  • 相关阅读:
    java使用 poi导出Excel 2003异常
    ajax 提交复选框
    基于tensorflow的躲避障碍物的ai训练
    现代企业的人力资源困局
    黑暗圣经---物业公司CTO/CEO改如何给老板推荐物业信息化产品
    物业管理系统选择之困——天下有没有白吃的午餐
    江湖风云再起——全球最高性价比私有云平台解决方案发布
    ES6 promise的使用
    C# web API的初步使用!!
    post 与get的区别
  • 原文地址:https://www.cnblogs.com/lanshanke/p/6604568.html
Copyright © 2020-2023  润新知