利用控制台承载SignalR作为服务端、及第三方推送信息

一 首先建立一个控制台需要引用一些组件

特别要注意引用Microsoft.Owin.Host.HttpListener别忘了这个组件,不引用他可能程序正常运行不会报错,但服务器一直开启失败(我之前就是掉过这个坑了)

二、建立一个控制台程序且建立集线器类MsgHub继承Microsoft.AspNet.SignalR.Hub

三、初始化服务端

四、调用InitSinalR方法即可启用成功服务端

到此完成服务端程序,客户端只需要请求上面地址即可运行

五、写到这只是完成了客户和服务消息传递,怎么将第三方消息发到客户端呢???

其实Microsoft.AspNet.SignalR里面有一个全局类GlobalHost,通过这个可以全局找到我们想要的hub

如: var hub = GlobalHost.ConnectionManager.GetHubContext<MsgHub>(); 这样我们就可以在任何地方调用hub方法

六、还使用了Topshelf组件,这样可以通过window服务部署程序了

 1 namespace SFBR_MsgForwardingService
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             HostFactory.Run(x =>
 8             {
 9                 x.Service<Startup>(s =>
10                 {
11                     s.ConstructUsing(name => new Startup());
12                     s.WhenStarted(tc => tc.Start());
13                     s.WhenStopped(tc => tc.Stop());
14                 });
15                 x.RunAsLocalSystem();
16
17                 x.SetDescription("SFBR消息转发服务");
18                 x.SetDisplayName("SFBR消息转发服务");
19                 x.SetServiceName("SFBR_MsgForwardingService");
20             });
21         }
22     }
23 }

七、客户端调用

  1.开启服务端,服务器运行正常后,可以通过浏览器测试是否正常 http://localhost:6178/signalr/hubs,显示以下界面说明正常

2.需要引用 <script src="Scripts/jquery.signalR-2.2.2.min.js"></script>

  3.通过ajax请求js数据,请求到数据后先注册注册客户端方法,再开启连接成功,

    

  <script type="text/javascript">
        var chat;
        //连接方法
        var connect = function (url, userID) {
          $.ajax({
                url: url + "/hubs",
                type: "get",
                dataType: "text",
                success: function (data) {
                    eval(data);
                    console.log("开始连接")
                    $.connection.hub.url = url;
                    $.connection.hub.qs = { "userId": userID };
                    chat = $.connection.msgHub;
                     // 注册客户端方法
                    registerClient();
                    // 连接成功后注册服务器方法
                    $.connection.hub.start().done(function () {
                        console.log(url + "连接成功");
                        $(‘#sendmessage‘).click(function () {
                            chat.server.send($(‘#displayname‘).val(), $(‘#message‘).val());
                            $(‘#message‘).val(‘‘).focus();
                        })
                    });
                    //断开连接后
                    $.connection.hub.disconnected(function () {
                        console.log("已断开连接");

                    });

                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    isLoaded = -1;
                },
            });
        }
        $(function () {
            var userId = prompt(‘Enter your name:‘, ‘‘);
            //Set the hubs URL for the connection
            connect("http://192.168.137.112:6178/signalr",userId);
        });
         // 注册客户端方法
       var  registerClient=function () {
            if (chat) {
                //接收消息1
                   chat.client.addMessage = function (name, message) {
                       console.log(message);
                       var encodedName = $(‘<div />‘).text(name).html();
                       var encodedMsg = $(‘<div />‘).text(message).html();
                        $(‘#discussion‘).append(‘<li><strong>‘ + encodedName
                            + ‘</strong>:&nbsp;&nbsp;‘ + encodedMsg + ‘</li>‘);

                    };
                 //接收消息2
                  chat.client.allInfo = function (message) {
                       console.log(message);
                        var encodedMsg = $(‘<div />‘).text(message).html();

                        $(‘#discussion‘).append(‘<li><strong>‘
                            + ‘</strong>:&nbsp;&nbsp;‘ + encodedMsg + ‘</li>‘);
                   }
            }
            }
    </script>

4.客户端代码调用不具体说明,比较简单,注册客户端方法的时候方法名称首字母必须小写

八、因文档功底比较差,具体实现请看代码,完整代码实例 github地址:https://github.com/lxshwyan/SFBR_MsgForwardingService.git

原文地址:https://www.cnblogs.com/lxshwyan/p/10785606.html

时间: 2024-08-01 13:55:12

利用控制台承载SignalR作为服务端、及第三方推送信息的相关文章

WebSocket 实现服务端给客户端推送消息

目录 代码发布 应用场景 ajax 操作 队列 递归 如何实现服务端主动给客户端推送消息的效果 长轮询(兼容性好) websocker(主流浏览器都支持) 代码验证(了解) 代码发布 服务端主动给客户端推送消息 截至目前为止,我们所写的 web 项目基本都是基于 HTTP 协议的 HTTP 协议有四大特性:无链接 基于 HTTP 协议实现服务端主动给客户端推送消息好像有点麻烦--- 我们都经历过,浏览器打开一个网站不动,网站过一会儿自动弹出消息 再比如网页版本的微信和 qq,我们所有人创建一个群

使用SignalR从服务端主动推送警报日志到各种终端(桌面、移动、网页)

原文:使用SignalR从服务端主动推送警报日志到各种终端(桌面.移动.网页) 微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. 使用SignalR从服务端主动推送警报日志到各种终端(桌面.移动.网页) 阅读导航 本文背景 代码实现 本文参考 1.本文背景 工作上有个业务,.Net Core WebAPI作为服务端,需要将运行过程中产生的日志分类,并实时推送到各种终端进行报警,终端有桌面(WPF).移动(Xamarin.Forms).网站(

实现服务端向客户端推消息

1.短轮询 2.长轮询 3.evnetsource  实现简单的服务端向浏览器推送消息,不支持跨域https://www.cnblogs.com/accordion/p/7764460.html 4.webscoke 最好选择,实时性好,对服务器版本有要求 5.iframe 永久帧 ,会使页面一直处理loading状态,体验不好 原文地址:https://www.cnblogs.com/chillaxyw/p/10392221.html

基于SignalR的服务端和客户端通讯处理

SignalR是一个.NET Core/.NET Framework的实时通讯的框架,一般应用在ASP.NET上,当然也可以应用在Winform上实现服务端和客户端的消息通讯,本篇随笔主要基于SignalR的构建一个基于Winform的服务端和客户端的通讯处理案例,介绍其中的处理过程. 1.SignalR基础知识 SignalR是一个.NET Core/.NET Framework的开源实时框架. SignalR的可使用Web Socket, Server Sent Events 和 Long

winform客户端利用webClient实现与Web服务端的数据传输

由于项目需要,最近研究了下WebClient的数据传输.关于WebClient介绍网上有很多详细介绍,大概就是利用WebClient可以实现对Internet资源的访问.无外乎客户端发送请求,服务端处理请求.回应请求.所以,我下面就简单描述下学习过程中遇到的一些问题: 1.关于Winform客户端请求 WebClient wc = new WebClient();//初始化webclient string path = "http://192.168.1.115:8089/Handler1.as

【试水CAS-4.0.3】第05节_CAS服务端自定义返回的用户信息

/** * @see ------------------------------------------------------------------------------------------------------------------------ * @see CAS服务端自定义返回的用户信息 * @see 返回的用户信息是在deployerConfigContext.xml中的<bean id="attributeRepository">配置的 * @se

Asp.net SignalR 实现服务端消息推送到Web端

原文:http://www.cnblogs.com/wintersun/p/4148223.html 之前的文章介绍过Asp.net SignalR,  ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.  今天我们来实现服务端消息推送到Web端,   首先回顾一下它抽象层次图是这样的: 实际上 Asp.net SignalR 2 实现 服务端消息推送到Web端, 更加简单. 为了获取更好的可伸缩性, 我们引入消息队列, 看如下

如何利用cURL和python对服务端和web端进行接口测试

工具描述 cURL是利用URL语法在命令行方式下工作的文件传输工具,是开源爱好者编写维护的免费工具,支持包括Windows.Linux.Mac等数十个操作系统,最新版本为7.27.0,但是我推荐大家使用7.26.0,从这里可以下载7.26.0版本. 以下是官方介绍的翻译: cURL是一个使用URL语法来传输数据的命令行工具,支持DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,S

[译]利用React Router4实现的服务端直出渲染(SSR)

我们已经熟悉React 服务端渲染(SSR)的基本步骤,现在让我们更进一步利用 React RouterV4 实现客户端和服务端的同构.毕竟大多数的应用都需要用到web前端路由器,所以要让SSR能够正常的运行,了解路由器的设置是十分有必要的 基本步骤 路由器配置 前言已经简单的介绍了React SSR,首先我们需要添加ReactRouter4到我们的项目中 $ yarn add react-router-dom # or, using npm $ npm install react-router