こんにちはSignalRの専門家を聞いているデータベースIFFからはSignalR-私はデータのグラフを表示するには、ライブダッシュボードを作成する必要があり、少なくとも1つのクライアントが
をデータをプルで提案されているようコードを実装していますdatabase.Iから引き出さサイトポイントブログ(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);
}
}
}
代わりにどのクライアントがリッスンされていない場合でも、データベースからデータを引っ張って、私はデータを取得したいです少なくとも1つのクライアントがリッスンしていて、クライアントがリッスンしていない場合にデータをプルすることを停止した場合に限り、これは可能ですか?任意の提案..
最初の接続後に 'OnConnect'とそれを実行するロック機構を使用できますか? –