Clients.User(..) 中的 SignalR 连接客户端不应该存在
SignalR connected client in Clients.User(..) shouldn't exist
在我的 SignalR 集线器中,我使用以下方法检查用户是否有活动连接:
var receivingClient = Clients.User(receiver);
if (receivingClient != null)
{
但我也通过 OnConnected
\ OnDisconnected
(在 ConcurrentDictionary
中)手动跟踪在线用户。现在,即使我关闭所有内容并从头开始启动服务器(例如 VS 中的 IISExpress),上面的代码部分 returns 也是不存在的连接的结果。
假设我从用户 A 发送给用户 B。我启动服务器,与用户 A 一起上线,然后向 B 发送消息: 上面的代码 returns a Microsoft.AspNetCore.SignalR.Internal.UserProxy<mySite.Services.ChatHub>
.
我不明白。用 null 检查来检查现有的客户端连接是否错误?我应该完全依赖我的手动跟踪吗?
感谢您的一些见解!
(PS: 这都在同一台服务器上 - 没有负载平衡/分片)
Clients.User(receiver)
returns 用于为给定用户调用方法的类型。与你传入的用户是否存在无关
Is it wrong to check for existing client connections with a null check? Should I exclusively rely on my manual tracking?
是的。使用手动跟踪。
在我的 SignalR 集线器中,我使用以下方法检查用户是否有活动连接:
var receivingClient = Clients.User(receiver);
if (receivingClient != null)
{
但我也通过 OnConnected
\ OnDisconnected
(在 ConcurrentDictionary
中)手动跟踪在线用户。现在,即使我关闭所有内容并从头开始启动服务器(例如 VS 中的 IISExpress),上面的代码部分 returns 也是不存在的连接的结果。
假设我从用户 A 发送给用户 B。我启动服务器,与用户 A 一起上线,然后向 B 发送消息: 上面的代码 returns a Microsoft.AspNetCore.SignalR.Internal.UserProxy<mySite.Services.ChatHub>
.
我不明白。用 null 检查来检查现有的客户端连接是否错误?我应该完全依赖我的手动跟踪吗?
感谢您的一些见解!
(PS: 这都在同一台服务器上 - 没有负载平衡/分片)
Clients.User(receiver)
returns 用于为给定用户调用方法的类型。与你传入的用户是否存在无关
Is it wrong to check for existing client connections with a null check? Should I exclusively rely on my manual tracking?
是的。使用手动跟踪。