SignalR限制连接数

本文关键字:连接 SignalR | 更新日期: 2023-09-27 18:12:48

我正在使用SingalR OWIN项目,并在同一时间寻找limit the number of connected clients

我有下面的代码来跟踪连接的数量:

public override Task OnConnected()
if (ConnectionManager.IsAllowed) // checks number of connected clients < 3
{
    ConnectionManager.connectedClients++;
    _log.Debug("Connected = " + ConnectionManager.connectedClients);
    return base.OnConnected();
}
else
{
    return null; // I thought this would reject the incoming connection 
                  // but it does not.
}
}

有人知道我需要做什么来拒绝传入的新连接吗?我在网上找不到任何例子。

有什么建议就太好了。

谢谢。

SignalR限制连接数

我不是SignalR的专家,如果其他人有内置的方式,我会很乐意删除这个,但我只是让我的函数以某种方式表明连接被拒绝。例如,您可以返回一个bool值并检查客户端是否允许,然后采取相应的行动。如果您需要在连接时返回一些东西,则返回一个复杂类型,该类型包含bool IsSuccess和您想要返回的任何类型的属性,然后再次检查客户端IsSuccess是否为真。无论如何,SignalR主动拒绝连接也不会做更多的事情。当然,除非您希望,例如,如果客户端在达到限制后连接,则抛出404。

如果有一些内置的方式通过web,我不会感到惊讶。配置设置连接限制,但这就是我要做的。这样你也有了更多的控制权。例如,如果您愿意,您可以告诉客户端连接了多少人。只是作为一个例子。

编辑:

我原来没有意识到你是在OnConnected方法。同样,可以想象有更好的选择,例如,我不知道如果在那个方法中抛出异常会发生什么。但在我见过的大多数SignalR的实际实现中,都有您自己编写的各种"入口方法"。例如,客户端可能调用并请求加入一个特定的聊天室,这是一个典型的例子。我个人会把支票放进去。然后,您可以简单地返回一个bool,以确定是否允许它们进入。

即使你没有这些,你也可以为BeginListening添加一些东西,并在那里进行检查。