在不总是运行的代码中,保持SignalR永远聆听



我正在使用ASP.NET Core应用程序中的SignalR Core。该代码不包含任何无限循环,因此它将在某个时候结束。当在不使用无限循环的情况下收到消息时,如何保持SignalR的聆听并执行函数?我正在Raspberry Pi上运行代码,因此硬件资源有限,循环不是一个不错的选择;

当需要SignalR数据的零件放置一段时间(true(时,代码可以工作。但是对于覆盆子Pi

来说很重
connection = new HubConnectionBuilder()
            .WithUrl("http://192.168.1.20:1234/getChoice")
            .Build();
connection.Closed += async (error) =>
{
   await Task.Delay(new Random().Next(0, 5) * 1000);
   await connection.StartAsync();
};
   connection.On<string, string>("ReceiveMessage", (user, message) =>
{
   controlSensors(message.ToString());
});
await connection.StartAsync();

我希望代码继续聆听任何新的选择,以在ControlSensors方法中执行预期的函数;实际结果是代码直接完成,因为显然它在第二个启动

的第二次没有收到任何消息

您可以在程序结束时编写 Console.Read()Console.ReadLine()。这样,循环不会消耗CPU资源。

while(true)
{
    Console.Read();
}

代码托管在服务器上,这起作用。它应该是服务器端。

最新更新