Czy istnieje sposób, aby dowiedzieć się liczbę słuchaczy (klienci podłączony do koncentratora?)Get liczbę słuchaczy, klientów podłączonych do SignalR piasty
próbuję uruchomić/rozpocząć zadanie, jeśli co najmniej jeden klient jest podłączony, w przeciwnym razie nie go uruchomić:
[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;
}
}
dzięki
masz przykład hos ten jest używany? czy zachowałbym tę listę w sesji? – ShaneKm
Zazwyczaj najlepiej jest utrzymywać liczbę na serwerze w pewnym typie magazynu danych (prawdopodobnie tylko w klasie statycznej). Mogę przedstawić rozwiązanie w mojej odpowiedzi, daj mi minutę ... –
+1 pamiętaj tylko o restarcie domeny aplikacji, że obiekt zostanie zresetowany; powinieneś rozważyć utrzymanie tego obiektu w pewnym momencie; Zwykle robię to za każdym razem, gdy ktoś zostanie dodany lub usunięty. – f0x