【问题标题】:signalR generating different ID for various instancessignalR 为各种实例生成不同的 ID
【发布时间】:2014-09-06 17:26:38
【问题描述】:

我已经使用 signalR 创建了网络聊天应用程序。当用户登录时,用户只能打开 3-4 个选项卡,并且每次生成不同的连接 ID。我希望当我们打开新选项卡或刷新页面时不应该生成新的连接 ID。我想使用现有的连接 ID。为此,我尝试实现 LocalStorage 变量来存储集线器连接。 但问题是我无法解析 localstorage 变量的值。

谁能给我解决我的问题,或者谁能给我任何其他解决问题的方法?

我已经尝试过这个http://kevgriffin.com/maintaining-signalr-connectionids-across-page-instances/,但它不适合我

【问题讨论】:

    标签: asp.net signalr


    【解决方案1】:

    如果用户通过身份验证,您可以在 HashSet 中存储不同的 connectionId。 HashSet 的键是用户名。

    http://www.asp.net/signalr/overview/signalr-20/hubs-api/mapping-users-to-connections

    即使您未通过身份验证,也可以使用此方法。在这种情况下,您可以使用 SessionId 代替用户名。

    已编辑

    我找到了另一种方法。在此articleAlex Ford 建议将您的连接限制为 3。

    【讨论】:

    • 问题将再次相同,因为将生成不同的连接 ID,并且将再次打开 3-4 个选项卡我想生成相同的连接 ID。你对此有什么想法吗??
    • 我没有看到问题。让用户“Foo”有 4 个不同的 connectionId(1、2、3、4)。所有这些标识符都通过键“Foo”存储在 HashSet(这是 Dictionary 的值)中。如果您想为他发送消息,您可以执行以下操作:Clients.Clients(_connections["foo"]).SendMessage("a message");
    • 问题不在于发送消息问题在于浏览器的连接限制。
    • @Priya,但您的问题是关于不同选项卡中的不同 connectionIds。是的,每个选项卡都有另一个 connectionId。大多数现代浏览器对同一域的并发连接有限制。欲了解更多信息,您可以阅读这篇文章:sgdev-blog.blogspot.sg/2014/01/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 2013-03-12
    • 2011-12-06
    相关资源
    最近更新 更多