使用 SignalR,是不是可以将消息批量推送到不断变化的客户端集合?

Posted

技术标签:

【中文标题】使用 SignalR,是不是可以将消息批量推送到不断变化的客户端集合?【英文标题】:Using SignalR, is it possible to do a bulk push of messages to a changing collection of clients?使用 SignalR,是否可以将消息批量推送到不断变化的客户端集合? 【发布时间】:2012-03-13 16:03:24 【问题描述】:

我所要求的可能与群组推送不同,在群组推送中,客户的集合通常保持相对恒定。

在通知系统中,客户端可以创建并非所有其他客户端都订阅的事件。例如,客户表示他们不想接收新登录通知,但想知道何时发布了仅来自某些用户的新照片。组合是无穷无尽的,并且是动态创建的,因此您无法进行群组推送。

在每个事件中,将创建一个新的客户端集合,这些客户端将接收通知。有没有办法通过批量推送而不是单独的私人消息来实现这一点?

实现这一点的方法是动态创建组(在服务器端),将客户端添加到该组,然后向该组发送消息?

谢谢。

【问题讨论】:

【参考方案1】:

我不明白您为什么需要为此设置群组?通过以下方式订阅事件 foo 的客户端:

$.connection.myHub.foo = function()  

将收到事件通知。我们现在不太擅长的地方是动态创建和删除事件,但这种支持将会得到改进。

如果你想要动态的东西,你唯一的选择就是使用组。

【讨论】:

用户可以订阅事件,是的,但是有些用户可能不希望看到其他用户的某些事件或允许用户查看他们的事件。例如,您已禁止用户查看您的“活动”。所以当你登录时,如果那个被禁止的用户也登录了,他们不会看到你的“登录”事件,但所有其他人都会看到。因此,将所有有效用户添加到该事件的通知组然后发送到组是我的想法。在发送通知之前,组一直存在,而不是遍历该列表并进行单独的私人发送。推荐方法? 使用组。跟踪其他地方的成员资格并使用组来选择哪些客户应该收到哪些消息。

以上是关于使用 SignalR,是不是可以将消息批量推送到不断变化的客户端集合?的主要内容,如果未能解决你的问题,请参考以下文章

将消息从 SSIS (2012) 包推送到 ASP.NET Web 应用程序中的 SignalR 集线器——最好的方法是啥?

SignalR的简单实现消息广播

我需要一个提示 - 是不是可以将消息推送到仅位于某些特定区域的 iphone(基于地理的通知)?

使用ASP.NET SignalR实现一个简单的聊天室

在 ASP.NET Core 中使用 SignalR

我可以制作 TPL DataFlow BatchBlock 单例吗?