使用 SignalR Core 向群组发送消息
Sending messages to groups using SignalR Core
这是我第一次实现 SignalR
,我从 SignalR Core
开始,所以一些示例和文档似乎不适用于新版本。
我的objective是将收到的消息发送到特定的聊天室。我知道这可以使用 Groups
.
来实现
第一个问题:我没有找到检查某个连接是否已在组中的方法。我不需要检查连接是否已经在 Group
中吗?每条消息都会收到一个 ChatRoomId
,因此我可以轻松地将 user/connection 添加到 Group
。我只是想知道是否需要检查连接是否已经是组的成员。
第二个问题:我想排除发送者接收自己消息的广播。 OthersInGroup
似乎已从 SignalR Core
中删除。如果我将邮件发送到 Group
?
,如何排除发件人
这些是我从 IntelliSense 获得的选项:
第一个问题:
没有内置方法来检查连接是否在组中。你可以通过向你的集线器注入服务或静态字典或其他东西来处理这个问题。因此,每次调用 Groups.AddAsync
和 Groups.RemoveAsync
时,您都可以跟踪它。
第二个问题:
GroupExcept(string groupName, IReadOnlyList<string> excludeIds)
是最近添加的,应该正是您所要求的。
第二个问题:
GroupExcept 方法在 SignalR alpha 上不可用。
你需要预览。
您可以在PM中添加运行:
dotnet 添加项目名称包 Microsoft.AspNetCore.SignalR --version 2.1.0-preview1-27884 --source https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json
这是我第一次实现 SignalR
,我从 SignalR Core
开始,所以一些示例和文档似乎不适用于新版本。
我的objective是将收到的消息发送到特定的聊天室。我知道这可以使用 Groups
.
第一个问题:我没有找到检查某个连接是否已在组中的方法。我不需要检查连接是否已经在 Group
中吗?每条消息都会收到一个 ChatRoomId
,因此我可以轻松地将 user/connection 添加到 Group
。我只是想知道是否需要检查连接是否已经是组的成员。
第二个问题:我想排除发送者接收自己消息的广播。 OthersInGroup
似乎已从 SignalR Core
中删除。如果我将邮件发送到 Group
?
这些是我从 IntelliSense 获得的选项:
第一个问题:
没有内置方法来检查连接是否在组中。你可以通过向你的集线器注入服务或静态字典或其他东西来处理这个问题。因此,每次调用 Groups.AddAsync
和 Groups.RemoveAsync
时,您都可以跟踪它。
第二个问题:
GroupExcept(string groupName, IReadOnlyList<string> excludeIds)
是最近添加的,应该正是您所要求的。
第二个问题: GroupExcept 方法在 SignalR alpha 上不可用。 你需要预览。 您可以在PM中添加运行: dotnet 添加项目名称包 Microsoft.AspNetCore.SignalR --version 2.1.0-preview1-27884 --source https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json