【问题标题】:Reliably counting the number of client connections to a SignalR hub可靠地计算到 SignalR 集线器的客户端连接数
【发布时间】:2012-11-23 12:24:31
【问题描述】:

我正在创建一个 Web 仪表板,它将显示我们的测试环境的状态。

我使用集线器将浏览器连接到服务器,并有一个后台任务来轮询环境的状态。如果至少连接了一个客户端,我只想执行此检查。

我的中心看起来有点像这样:

public class StatusHub : Hub
{
    private static int connectionCount = 0;

    public override Task OnConnected()
    {
        Interlocked.Increment(ref connectionCount);
        return base.OnConnected();
    }

    public override Task OnReconnected()
    {
        Interlocked.Increment(ref connectionCount);
        return base.OnReconnected();
    }

    public override Task OnDisconnected()
    {
        Interlocked.Decrement(ref connectionCount);
        return base.OnDisconnected();
    }

    // other useful stuff
}

这主要是有效的,但有时会调用 OnConnected 但不会调用 OnDisconnected。

一个特定的情况是,如果我打开 chrome 并键入页面的地址,但实际上并没有导航到它。似乎 Chrome 正在预取页面并连接,但从未断开连接。

所以两个问题:

  1. 这是计算连接数的好方法吗(我永远不会在网络场环境中运行)?
  2. 这些来自 Chrome 的僵尸连接最终会超时吗(我尝试将超时设置得非常低,但仍然没有断开连接)?

【问题讨论】:

    标签: signalr signalr-hub


    【解决方案1】:

    事件将始终触发。如果他们不这样做,请在 github 上使用 repro 步骤提交错误。要获得更准确的数字,您可以存储连接 ID 的哈希集并从中获取计数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多