[英]How to send a message to all clients on SignalR alpha for NET Core 2.0
[英]SignalR Core how to send message to clients every n seconds
我希望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; }
}
當我的代碼被執行時,它拋出一個異常,說
無法訪問已處置的對象
我懷疑我在這里做錯了。
那么,及時向所有客戶端發送消息的正確方法是什么?
好的,這次的答案不是來自Stack Overflow,而是來自另一個來源。
可以使用ASP.NET Core + SignalR Core中的此代碼完成此操作。
您將需要2個部分。
非常感謝David Fowler的回復!
var hubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
hubContext.Clients.All.SendnewData(Data);
將此代碼放在每秒更新或計算數據的位置。
像:您的數據庫過程完成,然后廣播新數據
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Infrastructure;
using Microsoft.AspNet.Mvc;
public class TestController : Controller
{
private IHubContext testHub;
public TestController(IConnectionManager connectionManager)
{
testHub = connectionManager.GetHubContext<TestHub>();
testHub.Clients.All.SendnewData(Data);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.