我在我正在制作的原型中使用SignalR。我需要向许多客户端广播消息,但是有一些逻辑可以说明哪些客户端将获得哪些消息足够复杂以排除使用组。相反,我基本上检查每个连接的客户端 - 如果它们适用,它们会被添加到List<>中。然后我使用以下方式发送消息:
var clients = DetermineClients(msg);
foreach (var client in clients)
client.Send(msg);
当然,如果我能够使用群组,我可以......:
var group = DetermineGroup(msg);
group.Send(msg);
...因为组的“发送”方法似乎基本上做同样的事情 - 枚举组中的客户端并在那些上调用“发送”。这是“正确”的方法吗?或者有什么方法可以动态创建一个临时组?群体或单一客户的“动态”类型使我很难确定我是否正确行事。如果在场景背后有一些魔法可以优化广播到一些客户端,我显然宁愿使用它!
任何建议都将不胜感激。如果您需要更多信息,请告诉我。
答案 0 :(得分:2)
如果您只是尝试根据复杂的标准向同一个客户发送相同的消息,那么您最好的选择是拥有一个包含所有客户的组,然后查询以找出哪些客户不要符合您的标准。如果连接ID列表不符合您的条件,您可以执行以下操作:
Clients.Group("myGroupThatHasAllMyClients",myExcludedConnectionIds).bar();