に接続リスナー、クライアントの数がリスナーの数を知るための方法があります取得します(ハブに接続されたクライアントは?)SignalRハブ
私は少なくとも一つの場合は、タスクを起動/実行しようとしていますクライアントが接続され、それ以外の場合は、それを起動しないでください:
[HubName("taskActionStatus")]
public class TaskActionStatus : Hub, IDisconnect
{
static CancellationTokenSource tokenSource;
public void GetTasksStatus(int? siteId)
{
tokenSource = new CancellationTokenSource();
CancellationToken ct = tokenSource.Token;
ITaskRepository taskRepository = UnityContainerSetup.Container.Resolve<ITaskRepository>();
// init task for checking task statuses
var tasksItem = new DownloadTaskItem();
taskRepository.GetTasksStatusAsync(siteId, tasksItem, ct);
// subscribe to event [ listener ]
tasksItem.Changed += new EventHandler<TaskEventArgs>(UpdateTasksStatus);
}
public void UpdateTasksStatus(object sender, TaskEventArgs e)
{
Clients.updateMessages(e.Tasks);
}
// when browsing away from page
public Task Disconnect()
{
try
{
tokenSource.Cancel();
}
catch (Exception)
{
//
}
return null;
}
}
おかげ
あなたはHOSの例この使用されているがありますか?セッションでこのリストを保持しますか? – ShaneKm
通常、何らかのタイプのデータストア(場合によっては静的クラス)内のサーバー上の数を保持することが最善です。私は私の答えで解決策を概説することができます、私に分を与える... –
+1ちょうどそのアプリケーションのドメインを再起動することを覚えて、そのオブジェクトはリセットされます。ある時点でそのオブジェクトを永続化することを検討する必要があります。私は通常、誰かが追加または削除されるたびにそれをやります。 – f0x