获取连接到 SignalR hub 的侦听器和客户端的数量

2023-11-26

有没有办法找出侦听器的数量(连接到集线器的客户端?)

如果至少有一个客户端已连接,我正在尝试运行/启动一项任务,否则不启动它:

[HubName("taskActionStatus")]
public class TaskActionStatus : Hub, IDisconnect
{
    static CancellationTokenSource tokenSource;

    public void GetTasksStatus(int? siteId)
    {
        tokenSource = new CancellationTokenSource();
        CancellationToken ct = tokenSource.Token;

        ITaskRepository taskRepository = UnityContainerSetup.Container.Resolve<ITaskRepository>();

        // init task for checking task statuses
        var tasksItem = new DownloadTaskItem();
        taskRepository.GetTasksStatusAsync(siteId, tasksItem, ct);

        // subscribe to event [ listener ]
        tasksItem.Changed += new EventHandler<TaskEventArgs>(UpdateTasksStatus);
    }

    public void UpdateTasksStatus(object sender, TaskEventArgs e)
    {
        Clients.updateMessages(e.Tasks);
    }

    // when browsing away from page
    public Task Disconnect()
    {
        try
        {
            tokenSource.Cancel();
        }
        catch (Exception)
        {
            //
        }

        return null;
    }
}

thanks


无法从 SignalR 中获取此计数。你必须使用OnConnect() and OnDisconnect()Hub 上的方法可以让您自己进行计数。

使用静态类来保存计数的简单示例:

public static class UserHandler
{
    public static HashSet<string> ConnectedIds = new HashSet<string>();
}

public class MyHub : Hub
{
    public override Task OnConnectedAsync()
    {
        UserHandler.ConnectedIds.Add(Context.ConnectionId);
        return base.OnConnectedAsync();
    }

    public override Task OnDisconnectedAsync(Exception exception)
    {
        UserHandler.ConnectedIds.Remove(Context.ConnectionId);
        return base.OnDisconnectedAsync(exception);
    }
}

然后你可以得到计数UserHandler.ConnectedIds.Count.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取连接到 SignalR hub 的侦听器和客户端的数量 的相关文章

  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 为什么 appcmd.exe 解锁配置在 Azure 模拟器上不起作用?

    我最近升级到 Azure 2 1 SDK 现在我的部分功能遇到了问题web config在计算模拟器上运行时处于 Web 角色中 我的web config包含这个
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • ASP.NET Click() 事件在第二次回发时不会触发

    我有一个 ASP NET Web 表单 我第一次提交表单时 会引发 提交按钮单击 事件 表单返回到浏览器时可能会出现验证错误 或者可以选择使用新值再次提交表单 当再次提交表单时 提交按钮单击 事件永远不会触发 Page Load 触发 但按
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock

随机推荐

  • C 字符串库

    是否有一个用于 C 而不是 C 的 C 字符串库 它实现了抽象char and wchar t 字符串 要求是 获得 BSD MIT CDDL 许可证 实现某种引用计数机制 支持正则表达式 有 Unicode 支持 Thanks 关于什么t
  • PHP:从对象中获取数据

    我怎样才能得到user nicename来自这个对象 BP User Object data gt stdClass Object ID gt 1 user login gt NICENICE user pass gt P BwLHvV7z
  • GWT、Google App Engine、TimerTask 或 ServiceImpl 中的线程抛出异常

    我正在使用 GWT 和 Google App Engine 我有一系列记录 我想每 30 分钟更新一次 在里面服务实现我有以下代码 new Timer schedule new TimerTask Override public void
  • 对于密钥 authView,此类不符合键值编码[重复]

    这个问题在这里已经有答案了 当我在模拟器上运行我的应用程序时 它运行良好 当我尝试使用设备时 它不起作用 并且出现以下错误 NOTE 我在代码中没有找到任何类型的 authView 类 2011 02 24 12 04 14 472 Tes
  • boost::asio 从socket读取n个字节到streambuf

    我有一个序列化结构 它是通过套接字发送的 我需要分块读取它 因为它的一个字段包含剩余数据的大小 我需要读取前几个字节 找出长度并读取其余部分 这就是我所得到的 boost asio streambuf buffer boost system
  • 文本区域中的新行字符会增加 C# 中的文本长度

    我的 ASP NET MVC 应用程序中遇到此问题 在我的一个模型中 有一个字段 描述 该字段的数据库列设置为NVarchar 300 在我看来 我正在创建一个文本区域 如下所示 Html TextAreaFor m gt m Descri
  • 不活动后自动关闭工作簿

    我创建了一个宏 可以在一段时间不活动后关闭WB 如果我手动打开文件 它会完美工作 但如果我使用不同 WB 中的另一个宏来打开文件 它不会在设置的不活动时间后自动关闭 我用来自动关闭它的代码是 本工作簿模块 Private Sub Workb
  • 如何在两个单独的步骤中运行 MSVC 预处理器和编译器?

    我想运行 Microsoft Visual Studio 编译器cl exe不调用预处理器 这可能吗 我认为简单地编译预处理的源代码 使用 c标志 将使预处理器以无操作的方式运行 但显然情况并非如此 我做了一些基准测试 这是一个小源文件 m
  • 使用 Rails 3 中的 Devise 显示上次登录的详细信息

    我有一个 Rails 3 应用程序 它使用 Devise 进行身份验证 我想在用户管理表中显示每个用户上次登录的日期和时间 我的应用程序基于以下应用程序 https github com dannymcc rails3 base 我已阅读
  • WPF keyDown 响应时间准确度

    我正在开发一个应用程序 用户可以在其中看到某些内容 并且必须通过单击键盘上的按键来做出反应 反应时间至关重要 越准确越好 我只编写了几行代码来测试默认设置的示例应用程序 inf WPF namespace Test
  • 保存变量值并在页面刷新后检索它[重复]

    这个问题在这里已经有答案了 我将一个字符串值保存到一个变量中 我的网页在某个过程后自动重新加载 我需要知道即使在页面刷新后我是否可以获得该变量中存储的值 我使用 javascript 代码刷新我的网页window location relo
  • 在 WPF 文本块中获取段落的最佳方法是什么? (换行符?)

    我有一些带有 r n 换行符的文本 我想在 WPF 文本块中添加换行符 我尝试将 r n 替换为 不带空格 当我在 XAML 中设置 Text 属性时它起作用 但在从 C 代码隐藏中设置时似乎不起作用 那么 将 WPF 文本块中的 r n
  • mongo组查询如何保留字段

    大家 在 mongo 组查询中 结果仅显示参数中的键 如何像mysql查询组一样保留每个组中的第一个文档 例如 name age sex province city area address ddl1st 22 纯爷们 BeiJing Be
  • 使用 CSS 仅针对 Firefox

    使用条件注释 可以轻松地使用特定于浏览器的 CSS 规则来定位 Internet Explorer 有时 Gecko 引擎 Firefox 会出现问题 使用 CSS 规则仅针对 Firefox 而不是其他浏览器的最佳方法是什么 也就是说 不
  • 如何使用用户 ID 参数下载 MSI 安装程序

    我有一个 NET C 应用程序 包含在 MSI 安装程序中 myprogram exe 我有一个 PHP 网站和一个特定页面 用户可以通过链接下载该程序 我希望能够跟踪 NET 应用程序上的某些事件 例如 程序已打开 将事件发送到我的服务器
  • 返回每组一列最大值的行[重复]

    这个问题在这里已经有答案了 如果不搜索同一个表至少两次以获取最大行 然后获取该行的值 我很难做到这一点 所讨论的表相当大 因此这是不可接受的 我的桌子可能是这样的 SCORES ID ROUND SCORE 1 1 3 1 2 6 1 3
  • 是否可以在 0.0.0.0 而不是 127.0.0.1 上启动 Vault 开发服务器?

    我有一个 Hashicorp Vault 服务器在 AWS EC2 实例上运行 地址为 127 0 0 1 8200 在我的安全组的入站规则中 我启用了 TCP 8200 但是 我无法从本地计算机访问 Vault 服务器 我认为这是因为开发
  • Clojure:减少与应用

    我理解之间的概念差异reduce and apply reduce list 1 2 3 4 5 translates to 1 2 3 4 5 apply list 1 2 3 4 5 translates to 1 2 3 4 5 然而
  • 如何从MySql中的表中删除最后一条记录(有条件)

    我有一个登录时间像这样的表 id user id datetime 1 1 2011 01 17 18 51 05 2 1 2011 01 18 18 51 05 3 1 2011 01 19 18 51 05 4 2 2011 01 19
  • 获取连接到 SignalR hub 的侦听器和客户端的数量

    有没有办法找出侦听器的数量 连接到集线器的客户端 如果至少有一个客户端已连接 我正在尝试运行 启动一项任务 否则不启动它 HubName taskActionStatus public class TaskActionStatus Hub