Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
C# 信号限制连接计数_C#_Signalr_Owin - Fatal编程技术网

C# 信号限制连接计数

C# 信号限制连接计数,c#,signalr,owin,C#,Signalr,Owin,我正在使用SingalR OWIN项目,希望限制一次连接的客户端数量 我有以下跟踪连接数的代码: public override Task OnConnected() if (ConnectionManager.IsAllowed) // checks number of connected clients < 3 { ConnectionManager.connectedClients++; _log.Debug("Connected = " + ConnectionMa

我正在使用SingalR OWIN项目,希望限制一次连接的客户端数量

我有以下跟踪连接数的代码:

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.
}
}
有人知道我需要做什么来拒绝传入的新连接吗?我在网上找不到任何例子

任何建议都很好


谢谢。

我不是信号专家,如果其他人有内置方式,我会很乐意删除它,但我会让我的函数以某种方式指示连接被拒绝。例如,您可以返回bool并检查客户端是否允许它,然后相应地采取行动。如果需要在连接的情况下返回某个内容,请返回包含bool issucess和任何类型的属性的复杂类型,然后再次检查客户端issucess是否为true。不管怎么说,主动拒绝连接的信号机不会做更多的事情。当然,除非您希望,例如,如果客户端在达到限制后连接,则抛出404

如果通过web.config有一些内置的方法来设置连接限制,我不会感到惊讶,但我会这样做。然后你也有了更多的控制权。例如,如果你愿意,你可以告诉客户有多少人被连接。举个例子

编辑:

我最初不知道您使用的是OnConnected方法。同样,很有可能有更好的选择,例如,我不知道如果在该方法中抛出异常会发生什么。但在我所见过的大多数实际的signar实现中,有一种您自己编写的输入方法。例如,客户端可能会呼叫并请求加入特定的聊天室,这是典型的示例。我会亲自把支票放在那里。然后,您可以简单地返回一个bool,说明是否允许他们进入


即使您还没有这样的选项,您也可以为BeginListing添加一些内容,并在那里进行检查。

感谢您的回复,我如何返回bool,知道OnConnected何时返回任务类型?我在回答中添加了一些内容。感谢您的建议,我已实施上述措施,并从相关事件中免除了授权责任。