SignalR- 如果至少有一个客户端正在监听,则从数据库中提取数据
SignalR- Pull Data from database iff at least one client is listening
您好 SignalR 专家,
我需要创建一个实时仪表板来显示从 database.I 提取的数据图表,我正在按照 sitepoint 博客 (https://www.sitepoint.com/build-real-time-signalr-dashboard-angularjs/) 中的建议实施代码。即使没有客户端在监听,它也会在站点启动后立即从服务器端提取数据。
Startup.cs代码
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
var hubConfiguration = new HubConfiguration();
hubConfiguration.EnableDetailedErrors = true;
app.MapSignalR();
//is this the right place for this code
DashboardService dashboardService = new DashboardService(10000); //10 second
Task.Factory.StartNew(async () => await dashboardService.GetDataFromDatabase());
}
}
DashboardService.cs
public class DashboardService
{
private IHubContext _hubs;
private readonly int _pollIntervalMillis;
public DashboardService(int pollIntervalInMilliSec)
{
_hubs = GlobalHost.ConnectionManager.GetHubContext<DashboardHub>();
_pollIntervalMillis = pollIntervalInMilliSec;
}
public async Task GetDataFromDatabase()
{
while (true)
{
await Task.Delay(_pollIntervalMillis);
//Data Logic to pull data from database
_hubs.Clients.All.broadcastToDashboard(broadcastObject);
}
}
}
我不想在没有客户端监听的情况下从数据库中提取数据,而是希望仅当至少有一个客户端在监听时才从数据库中提取数据,如果没有客户端在监听则停止拉取数据。这可能吗?任何建议..
参考this answer。
然后在提取仪表板数据之前检查 UserHandler.ConnectedIds.Any()
作为条件。
您好 SignalR 专家,
我需要创建一个实时仪表板来显示从 database.I 提取的数据图表,我正在按照 sitepoint 博客 (https://www.sitepoint.com/build-real-time-signalr-dashboard-angularjs/) 中的建议实施代码。即使没有客户端在监听,它也会在站点启动后立即从服务器端提取数据。
Startup.cs代码
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
var hubConfiguration = new HubConfiguration();
hubConfiguration.EnableDetailedErrors = true;
app.MapSignalR();
//is this the right place for this code
DashboardService dashboardService = new DashboardService(10000); //10 second
Task.Factory.StartNew(async () => await dashboardService.GetDataFromDatabase());
}
}
DashboardService.cs
public class DashboardService
{
private IHubContext _hubs;
private readonly int _pollIntervalMillis;
public DashboardService(int pollIntervalInMilliSec)
{
_hubs = GlobalHost.ConnectionManager.GetHubContext<DashboardHub>();
_pollIntervalMillis = pollIntervalInMilliSec;
}
public async Task GetDataFromDatabase()
{
while (true)
{
await Task.Delay(_pollIntervalMillis);
//Data Logic to pull data from database
_hubs.Clients.All.broadcastToDashboard(broadcastObject);
}
}
}
我不想在没有客户端监听的情况下从数据库中提取数据,而是希望仅当至少有一个客户端在监听时才从数据库中提取数据,如果没有客户端在监听则停止拉取数据。这可能吗?任何建议..
参考this answer。
然后在提取仪表板数据之前检查 UserHandler.ConnectedIds.Any()
作为条件。