IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

SignalR入门之多平台SignalR服务端

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

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

答案是肯定的。

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

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

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

install-package Microsoft.AspNet.SignalR.SelfHost

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

然后在控制台的Program类中

 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 namespace ConsoleApplication1
 {
     class Program
     {
         static void Main(string[] args)
         {
             using (WebApp.Start<Startup>("http://localhost:8888/"))//启动服务,访问路径在这里配置。
             {
                 Console.WriteLine("Server running at http://localhost:8888/");
                 Console.ReadLine();
             }
         }
     }
 }

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

 using System;
 using System.Threading.Tasks;
 using Microsoft.Owin;
 using Owin;

 [assembly: OwinStartup(typeof(Startup))]

 public class Startup
 {
     public void Configuration(IAppBuilder app)
     {
         app.MapSignalR<TestConnection>("/test");//配置指定持久性连接类,同时映射访问路径后面有用
     }
 }
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
 using System.Web;
 using Microsoft.AspNet.SignalR;

 public class TestConnection : PersistentConnection
 {
     protected override Task OnConnected(IRequest request, string connectionId)
     {
         return Connection.Send(connectionId, "Welcome!");
     }

     protected override Task OnReceived(IRequest request, string connectionId, string data)
     {
         Console.WriteLine(connectionId+"============="+data);//服务端接受消息
         return Connection.Broadcast(data);//将消息发送给所有客户端
     }
 }

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

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

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

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

install-package microsoft.aspnet.signalr.client

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

 using Microsoft.AspNet.SignalR.Client.Transports;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using Microsoft.AspNet.SignalR;
 using Microsoft.AspNet.SignalR.Client;
 namespace ConsoleApplication2
 {
     class Program
     {
         static void Main(string[] args)
         {
             try
             {
                 //GlobalHost
                 var connection = new Connection("http://localhost:8888/test");//服务端配置好的访问路径以及持久性连接映射路径

                 connection.Start();//开始连接
                 connection.Received += Connection_Received;//配置接受消息事件
                 string str = "";
                 while ((str = Console.ReadLine()) != "")
                 {
                     connection.Send(str);//发送消息
                 }

             }
             catch (Exception ex)
             {

                 Console.WriteLine(ex.Message);
             }
             Console.Read();
         }

         private static void Connection_Received(string obj)
         {
             Console.WriteLine(obj);
         }
     }
 }

文章永久链接:https://tech.souyunku.com/?p=37058


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(93) 打赏



未经允许不得转载:搜云库技术团队 » SignalR入门之多平台SignalR服务端

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367