signalr入门之多平台signalr服务端

hapgaoyi hapgaoyi     2022-08-18     702

关键词:

之前创建SignalR服务端是基于Web应用程序而言的。那么能不能把SignalR服务端做成控制台应用程序、Winform或windows服务呢?

答案是肯定的。

之前尽管看起来好像是IIS和ASP.Net构成托管SignalR服务的唯一环境,但事实上并非如此,很多情况下采用的并非是IIS和ASP.NET。

现在,在这里以控制台程序为例,将SignalR服务端建立在控制台程序里。

如何在控制台程序实现基于Hub或持久性连接的SignalR服务呢,首先安装下面的包:

install-package Microsoft.AspNet.SignalR.SelfHost

安装完成后,项目会自动加载需要引用的库文件。

然后在控制台的Program类中

 1 using System.Linq;
 2 using System.Text;
 3 using System.Threading.Tasks;
 4 
 5 namespace ConsoleApplication1
 6 {
 7     class Program
 8     {
 9         static void Main(string[] args)
10         {
11             using (WebApp.Start<Startup>("http://localhost:8888/"))//启动服务,访问路径在这里配置。
12             {
13                 Console.WriteLine("Server running at http://localhost:8888/");
14                 Console.ReadLine();
15             }
16         }
17     }
18 }

在上面的代码中,我们可以看出需要一个启动类Starup,这个类与我们之前建立持久性连接或Hub一样。

 1 using System;
 2 using System.Threading.Tasks;
 3 using Microsoft.Owin;
 4 using Owin;
 5 
 6 [assembly: OwinStartup(typeof(Startup))]
 7 
 8 public class Startup
 9 {
10     public void Configuration(IAppBuilder app)
11     {
12         app.MapSignalR<TestConnection>("/test");//配置指定持久性连接类,同时映射访问路径后面有用
13     }
14 }
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 using System.Web;
 6 using Microsoft.AspNet.SignalR;
 7 
 8 public class TestConnection : PersistentConnection
 9 {
10     protected override Task OnConnected(IRequest request, string connectionId)
11     {
12         return Connection.Send(connectionId, "Welcome!");
13     }
14 
15     protected override Task OnReceived(IRequest request, string connectionId, string data)
16     {
17         Console.WriteLine(connectionId+"============="+data);//服务端接受消息
18         return Connection.Broadcast(data);//将消息发送给所有客户端
19     }
20 }

以上的方式是在控制台里面建立SignalR服务,以持久性连接的方式进行编码的。

当然,我们也可以利用Hub来设置服务端,方式与之前的一样。

SignalR的服务端建立好后,我们需要建立一个客户端,之前,我们的客户端都是在html中以js的方式进行建立连接的。那么现在,我们将客户端也建立为控制台应用程序。

首先建立一个控制台应用程序,然后安装如下包:

install-package microsoft.aspnet.signalr.client

 

然后在Program类中的Main方法中编写:

 1 using Microsoft.AspNet.SignalR.Client.Transports;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 using Microsoft.AspNet.SignalR;
 8 using Microsoft.AspNet.SignalR.Client;
 9 namespace ConsoleApplication2
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             try
16             {
17                 //GlobalHost
18                 var connection = new Connection("http://localhost:8888/test");//服务端配置好的访问路径以及持久性连接映射路径
19                 
20                 connection.Start();//开始连接
21                 connection.Received += Connection_Received;//配置接受消息事件
22                 string str = "";
23                 while ((str = Console.ReadLine()) != "")
24                 {
25                     connection.Send(str);//发送消息
26                 }
27         
28             }
29             catch (Exception ex)
30             {
31 
32                 Console.WriteLine(ex.Message);
33             }
34             Console.Read();
35         }
36 
37         private static void Connection_Received(string obj)
38         {
39             Console.WriteLine(obj);
40         }
41     }
42 }

 

signalr入门篇

...询技术来获取消息。可访问其官方网站:https://github.com/SignalR/ 获取更多资讯。 二,实现机制SignalR的实现机制与.NETWCF或Remoting是相似 查看详情

signalr入门之持久性连接

...并且使用传输在这这样的连接上发送数据,这个用来访问SignalR持久性连接的底层API提供了一个隐藏底层固有复杂性的抽象层。事实上,通过该API访问通信通道和在底层使用Socket方式类似:在服务端,当连接打开或关闭、接受数... 查看详情

初识signalr(代码片段)

SIgnalR是微软开发的一套通信组件,如果听说过websocket的话,那么SignalR功能和websocket类似,提供客户端和服务端的实时通信。SignalR客户端可用于.net平台和js上,服务端(afaik)是在.net上的。对于js和服务器间的通信,signalR相较于... 查看详情

signalr服务端

signalr支持iis托管、winform、windowsservices、wpf托管这里我采用winfrom托管首先画一个这样的窗体在服务项目通过项目管理包安装signalr类库安装后如果客户端是web程序则将js移动到客户端编写客户端的时候使用这次我安装缺少一个 ... 查看详情

基于signalr的服务端和客户端通讯处理(代码片段)

SignalR是一个.NETCore/.NETFramework的实时通讯的框架,一般应用在ASP.NET上,当然也可以应用在Winform上实现服务端和客户端的消息通讯,本篇随笔主要基于SignalR的构建一个基于Winform的服务端和客户端的通讯处理案例,介绍其中的处理... 查看详情

signalr系列教程:signalr快速入门

---恢复内容开始---本篇是SignalR系列教程的第一篇,本篇内容介绍了如何创建SignalR应用,如何利用SignalR搭建简易的聊天室等,本篇内容参考自:http://www.asp.net/signalr/overview/older-versions/tutorial-getting-started-with-signalr,文中会有我对实例代... 查看详情

记录ocelot+signalr多服务端测试(代码片段)

前言分两个项目,一个Gatway,一个SignalR贴代码1、Gatway1、引用Ocelot2、添加一点点代码Startup.cs3、简单配置ocelotocelot.json"ReRoutes":["DownstreamPathTemplate":"/catchAll",//下游路径"DownstreamScheme 查看详情

SignalR - 从服务器端代码调用 Hub 类方法(存在于单独的 MVC 项目中)

】SignalR-从服务器端代码调用Hub类方法(存在于单独的MVC项目中)【英文标题】:SignalR-CallingHubclassmethod(presentinaseparateMVCproject)fromServersidecode【发布时间】:2013-07-2116:45:49【问题描述】:我已经阅读了一些SignalR教程。为了在我现... 查看详情

Nodejs vs SignalR:为啥我们需要服务器端 javascript?

】NodejsvsSignalR:为啥我们需要服务器端javascript?【英文标题】:NodejsvsSignalR:whydoweneedserver-sidejavascript?NodejsvsSignalR:为什么我们需要服务器端javascript?【发布时间】:2012-02-2201:21:37【问题描述】:自从我知道Node.js以来,我一直... 查看详情

1.使用signalr实现页面即时刷新(服务端主动推送)

模块功能说明:实现技术:sqlserver,MVC,WebAPI,ADO.NET,SignalR(服务器主动推送)特殊车辆管理--->移动客户端采集数据存入数据库---->只要数据库数据有变化,服务端自动推送到Wbe页面展示(区别于传统的web请求)-->审核人... 查看详情

signalr在react/go技术栈的实践(代码片段)

...哧半年,优化改进了一个运维开发web平台。本文记录SignalR在react/golang技术栈的生产小实践。01背景有个前后端分离的运维开发web平台,后端会间隔5分钟同步一次数据,现在需要将最新一次同步的时间推送到web前端。... 查看详情

signalr-winform服务端

  最近有项目需求,要实现在网页上获取服务器信息。大家都知道,网页程序很难获取客户端信息比如MAC、CPU、硬盘信息等等。当时想过一些种方案,比如:通过IE插件,但只能用IE浏览器。正为这事焦头烂额时,一天回家的... 查看详情

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

原文:使用SignalR从服务端主动推送警报日志到各种终端(桌面、移动、网页)微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言,如果对您有所帮助:欢迎赞赏。使用SignalR从服务端主动推送警报日志到各种终端(桌面... 查看详情

signalr服务端及客户端实现

服务器端:引用nuget:1、Microsoft.AspNet.SignalR.SelfHost2、Microsoft.Owin.CorsinternalclassProgramstaticvoidMain(string[]args)stringuri="http://localhost:8081";using(WebApp.Start(uri))Console.WriteLine("Serverrunningon0",uri);Console.ReadLine();classStartuppublicvoidConfiguration(IAppBuil... 查看详情

signalr的简单使用()

 之前提到SignalR代理在网页,通过生成的Js来完成相关的功能。但我不禁想一个问题,难到SignalR的服务端就能寄存在web端吗,通过访问网页能方式才能启动服务,还有客户端也只能在web端吗?经过看官网的教程得到了结论,... 查看详情

signalr学习记录-简介(代码片段)

SignalR简介什么是SignalR?ASP.NETSignalR是ASP.NET开发人员的库,可简化将实时web功能添加到应用程序的过程。 实时web功能使服务器代码能够在可用时立即将内容推送到连接的客户端,而不是让服务器等待客户端请求新的数据。Sign... 查看详情

vuejs和signalr结合实现消息推送1

由于signalr2.2.0依赖于jQuery,虽然在vuejs略显臃肿,但是对于目前刚接触vuejs和想实现前后分离的我来说这已经很好了。目前先实现功能,然后如果有时间或者期望大牛将signalr改成不依赖jQuery的signalr.项目结构是分服务端asp.netwebAPI前... 查看详情

signalr学习系列4.signalr广播程序

创建项目创建一个空的Web项目,并在Nuget里面添加SignalR,jQueryUI包,添加以后项目里包含了jQuery,jQuery.UI,和SignalR的脚本。 服务端代码创建Stock类usingSystem;namespaceSignalRDemo4{publicclassStock{privatedecimal_price;publicstringSymbol{get;se 查看详情