Azure SignalR All.SendAsync 是向所有客户端发送消息,还是仅向具有给定方法名称的客户端发送消息?

Does Azure SignalR All.SendAsync send messages to ALL clients, or just clients with given method name?

问题:为了尽量减少每条消息的费用,我想按方法名称限制消息。 根据下图,我需要知道在以下情况下 SignalR 将向哪些客户端发送消息:

1.) 创建中心“/MyHub”

2.) 3 个用户(在 Angular 客户端上)使用名为“Post_A”的方法注册到集线器

3.) 然后 2 个不同的用户使用名为“Post_B”的方法向同一个 Hub 注册

4.) 如果 API 服务器通过 Clients.All.SendAsync("post_B", dto) 发送更新,它只会发送给用户 3 和 4 吗?或者该消息会发送给所有五个用户吗?

奖金!如果答案是所有消息都发送给所有用户,是否有不使用组的选项?我不 认为 组会工作 w/o 每次用户查看新的 post 时会有很多额外的开销(会有数千个 posts).

谢谢!

做了一些测试。

SignalR 的 Clients.All.SendAsync(MethodName, object) 确实 向所有客户端发送消息,即使他们没有使用方法 MethodName.

注册

正如您在上面的 client-side 日志中所看到的(在打开 SignalR 的控制台日志记录之后),客户端在收到未注册方法的消息时会抛出警告。

因此群组是限制消息的唯一选择。