0

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

1.) 创建集线器“/MyHub”

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

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

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

奖金!如果答案是所有消息都发送给所有用户,是否有不使用组的选项?我不认为每次用户查看新帖子(会有数千个帖子)时,组不会产生大量额外开销。

谢谢!

在此处输入图像描述

4

1 回答 1

0

做了一些测试。

SignalR 的 Clients.All.SendAsync( MethodName , object)确实向所有客户端发送消息,即使它们尚未使用MethodName方法注册。

在此处输入图像描述

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

因此,组是限制消息的唯一选项。

于 2020-10-22T18:20:04.743 回答