SignalR Core 如何每 n 秒向客户端发送消息

Sup*_*JMN 3 .net c# signalr signalr-hub

又名“从后台服务向客户端发送消息”

我希望我的 SignalR 服务器每 n 秒更新一次仪表板。我现在正在使用这个:

public class MyHub : Hub
{
    public override Task OnConnectedAsync()
    {
        Observable.Interval(TimeSpan.FromSeconds(0.5)).Subscribe(l =>
        {
            var alt = CalcAltitude(l);
            SendMessage(alt);
        });

        return Task.CompletedTask;
    }

    private void SendMessage(double alt)
    {
        Clients.All.SendAsync("SendAction", new Status() {Altitude = alt});
    }

    private double CalcAltitude(long l)
    {
        return 100 * Math.Sin((double) l / 100) + 200;
    }
}

public class Status
{
    public double Altitude { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我的代码被执行时,它抛出一个异常说

无法访问已处置的对象

我怀疑我在这里做错了什么。

那么,及时向所有客户端发送消息的正确方法是什么?

Sup*_*JMN 5

好吧,这次的答案不是来自 Stack Overflow,而是来自另一个来源。

这可以在 ASP.NET Core + SignalR Core 中使用此代码完成。

你需要2个部分。

非常感谢大卫福勒的答复!