有没有办法找出听众(客户端连接到集线器?)我试图运行数获取听众,客户端连接到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