2014-09-05 47 views
4

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

任何人都可以给我解决我的问题,或任何人都可以给我任何其他解决方案的问题?

我已经尝试过这种http://kevgriffin.com/maintaining-signalr-connectionids-across-page-instances/但是这么想的工作对我来说

回答

0

如果用户通过验证,您可以在HashSet的存储不同connectionIds。 HashSet的关键是用户的名字。

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

可以使用,即使你不需要身份验证此方法。在这种情况下,您可以使用SessionId而不是用户名。

EDITED

我已经找到另一种方法。在此article亚历克斯福特建议将您的连接限制为3.

+0

问题将再次相同,因为将生成不同的连接ID并再次打开3-4个选项卡我想要生成相同的连接ID。你有什么想法吗? – Priya 2014-09-06 04:21:07

+0

我看不到问题。让用户“Foo”有4个不同的connectionIds(1,2,3,4)。所有这些标识符都通过键“Foo”存储在HashSet(它是字典的值)中。如果您想为他发送消息,您可以执行以下操作: Clients.Clients(_connections [“foo”])。SendMessage(“a message”); – Neshta 2014-09-06 08:51:50

+0

问题不在于发送消息的问题与浏览器的连接限制有关。 – Priya 2014-09-06 10:15:29