【问题标题】:Adding user to group in SignalR在 SignalR 中将用户添加到组
【发布时间】:2018-03-06 08:48:06
【问题描述】:

将新用户添加到我的SignalR Hub 中的组时,如何检查该用户是否已添加到该特定组?我还需要担心这个吗?

在我的基于SignalR 的聊天应用程序中,有多个聊天室,用户可以同时参与多个聊天室。每次用户单击聊天室时,我都会将其设置为活动房间,这会调用我的SignalR Hub 以确保用户在群组中——使用以下行:

await Groups.AddAsync(Context.ConnectionId, roomId);

我只是想确保如果我的代码多次尝试将 connectionId 添加到组中,我不会收到任何错误,这就是为什么我试图找出我是否需要担心这种情况.如果是这样,我如何检查特定组中的当前 connectionId。

顺便说一句,我在最新版本的 SignalR 中对此进行编码,它是 ASP.NET Core 2.1 Preview-1 的一部分。

【问题讨论】:

  • 你为什么不把那行重复两次并测试一下?

标签: asp.net-core signalr signalr-hub


【解决方案1】:

是的,这是可能的!因此,如果客户不止一次在一个组中,他将多次收到一个事件...

查看来源: https://github.com/aspnet/SignalR/blob/1790d6bdf088bab120cd14912d6d625d983fb077/src/Microsoft.AspNetCore.SignalR.Core/DefaultHubLifetimeManager.cs

https://github.com/aspnet/SignalR/blob/af286c81bbca00a532ad5297a8f35c9eb1310684/src/Microsoft.AspNetCore.SignalR.Core/HubGroupList.cs

在那里你可以看到在你调用 AddAsync(...) 的情况下正在运行什么

群组跟踪:

但根据对组的跟踪,我认为它与“旧”信号器中的相同: 您需要自己跟踪组的成员。 SignalR 的组仅用于消息传递。如果您想成为会员,那么您需要自己进行跟踪。

【讨论】:

  • 我已经跟踪了我的用户的成员身份,但这些是连接 ID,而不是用户 ID。如果我没记错的话,用户每次连接都会得到不同的连接 ID。因此,如果没有内置方式,那么我必须跟踪连接 ID,如果/当用户断开连接并使用新 ID 重新连接时,这可能会有点疯狂。
  • @Sam 是的,用户每次都会获得一个新的连接 ID。我认为这并不难。顺便说一句,我还不清楚你问什么。您的问题看起来确实像您想知道是否存在构建机制以及是否可以将客户端多次添加到组中。
【解决方案2】:
猜你喜欢
  • 2019-12-02
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 2011-11-19
  • 1970-01-01
相关资源
最近更新 更多