Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Signalr 获取信号器核心组中的连接计数时出错_Signalr_Asp.net Core Signalr - Fatal编程技术网

Signalr 获取信号器核心组中的连接计数时出错

Signalr 获取信号器核心组中的连接计数时出错,signalr,asp.net-core-signalr,Signalr,Asp.net Core Signalr,如何获取特定信号机核心组中的连接数 诸如此类: this.Clients.Group("Something").Count(); 如果SendAsync将返回多少个客户端发送消息,这也很好: var count = await this.Clients.Client(this.Context.ConnectionId).SendAsync("msg", msg); 我需要这个来确定组是否为空。如果用户使用强制拔出网络电缆从信号机核心断开连接,则数据应正确。您可以使用OnConnected和O

如何获取特定信号机核心组中的连接数

诸如此类:

this.Clients.Group("Something").Count();
如果SendAsync将返回多少个客户端发送消息,这也很好:

var count = await this.Clients.Client(this.Context.ConnectionId).SendAsync("msg", msg);

我需要这个来确定组是否为空。如果用户使用强制拔出网络电缆从信号机核心断开连接,则数据应正确。

您可以使用OnConnected和OnDisconnected事件并保存连接/连接ID

我使用这样的方法来补充信息:

内部静态ConcurrentDictionary用户=新建ConcurrentDictionary; 公共覆盖异步任务OnConnectedAsync { var connId=Context.ConnectionId; 如果!Users.Keys.Anyx=>x==connId { Users.TryAddconnId,新连接信息{/*…*/}; } 等待base.OnConnectedAsync; } 公共覆盖异步任务OnDisconnectedAsyncException异常 { var id=Context.ConnectionId; 如果Users.TryRemoveid,则输出ConnectionInfo ci { //连接已删除 } 等待base.OnDisconnectedAsyncexception; }
注意:如果您有多台服务器,这将无法提供可靠的计数。这就是为什么我们没有提供一种内置的方法来实现这一点。当您有多个服务器时,每个服务器只知道该服务器上的连接。这是正确的,但实际上我没有看到任何简单的方法来了解所有连接。实际上,没有内置解决方案,也没有简单的多服务器配置解决方案。@AndrewStanton Nurse我有你提到的确切情况,我有一个负载平衡器,Signal使用Redis保持连接,但我仍然必须将连接映射到用户,类似于:private static ConcurrentDictionary我怎么能做到这一点?我必须手动使用Redis来保存此词典吗?我可以利用连接到Redis的内置信号器机制,并将该字典注入发送到Redis的数据中吗?@AndrewStanton Nurse如果这对多服务器环境不起作用,客户端是如何处理的。所有这些都是如何处理的?