使用Pusher,如何最好地监听大量频道和事件?

7
我有40个类别,每个类别有10-100个子类别。默认情况下,用户会收听所有类别和子类别。我想让每个用户有能力选择解除绑定整个类别或特定的子类别。所以,现在我有的是每个类别都是一个频道,每个子类别都是一个事件。
现在,我有像每个用户绑定2000-3000个事件这样的东西,我知道这是错误的,那么让用户在3000个事件之间过滤的正确方法是什么?绑定那么多事件可以吗?

我认为使用事件是很正常的,你可以有很多,但它取决于客户端的性能。顺便说一下,优化可以在你的事件连接方式上实现。 - SmasherHell
@SmasherHell 你所说的"wired"是什么意思? - Amir Bar
你可以通过匿名函数(例如:element.onclick = function(){};)定义事件,也可以定义一个可以处理多个事件的函数(例如:element.onclick = event_handler;)。 - SmasherHell
1个回答

9
请记住,当您订阅一个频道时,频道的所有事件都将发送给客户端(Pusher - 客户端),即使您没有绑定该事件也是如此。
考虑到上述信息,我建议使用频道来过滤数据。订阅频道时的开销不大。例如,订阅40个频道不会产生任何显着的资源使用。您需要考虑这些频道是否为公共频道(任何人都可以订阅)或私有频道,每次调用pusher.subscribe('private-channel-x');都会导致向您的服务器发出身份验证请求。有一个多重身份认证插件,可以批处理身份验证请求。
一种解决方案是让每个用户订阅自己的通知频道,并在单个频道上发送他们感兴趣的事件。您可以使用多发布功能,将相同的事件发送到多个频道。如果您希望向多个用户发送相同的事件,则可能会有所帮助。但是,从信息架构的角度来看,这种解决方案可能不够优雅。

最好的解决方案取决于您的应用程序。但是通过以上内容,您现在拥有了所有事实,这将使您做出最有效的选择。


“多订阅功能”的链接已不再有效。在这方面有任何新消息吗? - technoTarek
@technoTarek 请查看 https://github.com/pusher/pusher-js#batching-auth-requests-aka-multi-auth - leggetter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接