【问题标题】:How to run a client and self hosted server in the same console app?如何在同一个控制台应用程序中运行客户端和自托管服务器?
【发布时间】:2021-06-15 14:49:12
【问题描述】:

我在 .NET 核心中有一个自托管的 signalR 应用程序,我想运行一个与完全不同的 socketIO 服务器连接的 socketIO 客户端,但是当我运行 signalR 服务器时,socketIO 客户端无法接收来自外部的命令socketIO 服务器。 我曾尝试使用线程来运行 socketIO 客户端,但没有运气。我的猜测是,当我使用下面代码中提到的“host.Run()”命令运行 SignalR 服务器时,它会以某种方式阻止我的 socketIO 客户端连接。 如何在同一个控制台应用程序上运行 SignalR 服务器(自托管)和 socketIO 客户端,以免它们相互阻塞? 附言我正在使用 'SocketIOClient' nuget 包来创建 socketIO 客户端。 我的代码看起来有点像这样:

'''

        string serviceAddress = ConfigurationManager.AppSettings["SocketIOServerAddress"];

        // Get SignalR hub context
        var host = CreateHostBuilder(args).Build();
        var hubContext = host.Services.GetService(typeof(IHubContext<MyHub>));

        socketClient = new MySocketIOClient((IHubContext<MyHub>)hubContext, serviceAddress);

        await Task.Factory.StartNew(async () => {
            await socketClient.ConnectAsync();
            Console.ReadKey();
        });

        Console.WriteLine("Starting SignalR host...");

        //host.Run();
        await Task.Factory.StartNew(() => { host.Run(); });

'''

【问题讨论】:

    标签: c# .net socket.io signalr


    【解决方案1】:

    您可以尝试在后台服务中运行任何一个:https://blog.computedcloud.com/background-services-in-net-core-console-app/

    【讨论】:

      猜你喜欢
      • 2020-08-10
      • 2019-01-21
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多