2

我在我正在构建的原型中使用 SignalR。我需要向多个客户端广播消息,但是对于哪些客户端将获得哪些消息有一些逻辑,这足够复杂,可以排除使用组的可能性。相反,我基本上是在检查每个连接的客户端——如果它们适用,它们会被添加到 List<> 中。然后我使用以下方式发送消息:

var clients = DetermineClients(msg);
foreach (var client in clients)
    client.Send(msg);

当然,如果我能够使用组,我可以这样做...:

var group = DetermineGroup(msg);
group.Send(msg);

...因为组的“发送”方法似乎基本上做同样的事情 - 枚举组中的客户端并在这些客户端上调用“发送”。这是执行此操作的“正确”方法吗?或者有什么方法可以即时创建一个临时组?团体或单一客户的“动态”类型让我很难确定我是否做对了。如果在幕后有一些魔法可以优化对多个客户端的广播,我显然更愿意使用它!

任何意见,将不胜感激。如果您需要更多信息,请告诉我。

4

1 回答 1

3

如果您只是尝试根据复杂的标准向多个不同的客户发送相同的消息,那么最好的办法是拥有一个包含所有客户的组,然后查询以找出哪些客户符合您的标准. 使用不符合您的条件的连接 ID 列表,您可以执行以下操作:

Clients.Group("myGroupThatHasAllMyClients",myExcludedConnectionIds).bar();
于 2013-05-14T17:47:33.283 回答