有沒有辦法找出聽衆(客戶端連接到集線器?)我試圖運行數獲取聽衆,客戶端連接到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;
}
}
感謝
你有這是用來居屋的例子嗎?我會在會議中保留這個清單嗎? – ShaneKm
通常最好是在某些類型的數據存儲(可能只是一個靜態類)中保持服務器上的計數。我可以在我的答案中概述解決方案,給我一分鐘... –
+1只記得在應用程序域重新啓動時,對象將被重置;你應該考慮在某個時候堅持這個對象;我通常每當有人被添加或刪除時都會這樣做。 – f0x