【问题标题】:Count and list connectees in SignalR在 SignalR 中计算和列出连接者
【发布时间】:2014-05-20 14:39:53
【问题描述】:

根据the wisdom of StackOverflow,无法列出或检查已连接客户端的数量。不过回复有点老了,不知道还有效吗。

它是服务器记录所有连接和断开连接的唯一选项吗? 是否至少有一些功能可以帮助我们检测断开连接?

【问题讨论】:

    标签: c# signalr


    【解决方案1】:

    绝对有办法。

    很多人通过创建一个包含您定义的任何自定义用户对象的并发字典的单例类来处理这个问题。如果您在连接时将自定义用户对象添加到此字典并在断开连接时将其删除,您将能够在字典中查询活动用户的数量。请记住,它可能不会精确到秒,因为大约有一个 30 秒的“中止”窗口可能仍然处于活动状态,即使客户端不再是因为他们关闭了浏览器。

    现在,SignalR 中是否有任何真正的“硬性”功能可以为您执行此操作?我不知道,但我还没有太详尽地研究 2.0。至于检测断开连接,它相当强大,如果未检测到连接,它会如前所述删除连接,让您随时了解断开连接。

    这里有一个很好的教程来描述这种方法:

    http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-server-broadcast-with-signalr-20

    【讨论】:

    • 我显示的链接中描述的方式或多或少,对吧?我想这就够了。但我希望有更强大的东西。是否有推荐的、专门的类来处理客户或者应该自己写一个?
    • 很遗憾,我自己的所有研究都没有发现任何可以直接从库中使用的内置工具。我链接的教程可能是更标准的方法之一,它利用单例模式来保存您的字典实例。我自己在生产中使用过它,而且效果很好。 ConcurrentDictionary 也保持线程安全
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 2017-04-09
    • 2011-04-18
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2023-02-01
    相关资源
    最近更新 更多