我想从服务器调用特定客户端,而不是向所有客户端广播.问题是我在一些AJAX请求的范围内(在.aspx代码后面说),而不是在Hub或PersistentConnection中,所以没有Clients属性 - 而且那个调用ajax(jquery)的客户端不是客户端我想发送信号消息!
现在,我有一个在JS页面加载上调用的集线器,它将新客户端注册到服务器静态列表中,所以我有客户端Guids.但是不知道如何使用它从服务器向特定客户端发送消息.
我需要检查特定用户是否仍然连接.
我有以下用于跟踪用户的HashSet:
public static class UserHandler
{
public static HashSet<string> ConnectedIds = new HashSet<string>();
}
Run Code Online (Sandbox Code Playgroud)
因此断开连接:
public override Task OnDisconnected()
{
UserHandler.ConnectedIds.Remove(this.Context.ConnectionId);
if (UserHandler.ConnectedIds.Count == 0)
{
// STOP TASK -> SET CANCELLATION
}
return base.OnDisconnected();
}
Run Code Online (Sandbox Code Playgroud)
并在连接上:
public override Task OnConnected()
{
Logger.Log.file.Info("[TaskActionStatus HUB => OnConnected] Start");
UserHandler.ConnectedIds.Add(this.Context.ConnectionId);
// start task only if at least one listener
if (UserHandler.ConnectedIds.Count < 2)
{
// START A TASK -> (WHILE LOOP THAT GETS DATA FROM DB EVERY 2 SEC)
}
return …Run Code Online (Sandbox Code Playgroud)