我有 40 个类别,每个类别都有 10-100 个子类别。默认情况下,用户收听所有类别和子类别。我想让每个用户能够选择从整个类别或特定子类别中取消绑定。所以,现在我所拥有的是每个类别都是一个频道,每个子类别都是一个事件。
现在,我有一个像每个用户绑定到 2000-3000 个事件的东西,我知道这是错误的,那么让用户在 3000 个事件之间进行过滤的正确方法是什么?绑定这么多事件可以吗?
我有 40 个类别,每个类别都有 10-100 个子类别。默认情况下,用户收听所有类别和子类别。我想让每个用户能够选择从整个类别或特定子类别中取消绑定。所以,现在我所拥有的是每个类别都是一个频道,每个子类别都是一个事件。
现在,我有一个像每个用户绑定到 2000-3000 个事件的东西,我知道这是错误的,那么让用户在 3000 个事件之间进行过滤的正确方法是什么?绑定这么多事件可以吗?
重要的是要记住,当您订阅频道时,该频道的所有事件都将发送到客户端(Pusher - 客户端),即使您没有绑定到该事件。
考虑到上述信息,我建议使用通道来过滤数据。订阅频道时的开销不是很大。例如,订阅 40 个频道并不代表任何重要的资源使用。您需要考虑频道是公共的(任何人都可以订阅)还是私人的,每次调用pusher.subscribe( 'private-channel-x' );
都会向您的服务器发出身份验证请求。有一个多重身份验证插件,允许对身份验证请求进行批处理。
一种解决方案是让每个用户订阅他们自己的通知频道,并向他们发送他们在该单一频道上感兴趣的事情的事件。您可以为此使用多发布功能,这使您可以在多个频道上发送相同的事件。如果您希望将相同的事件发送给多个用户,这可能会很有用。但是,从信息架构的角度来看,这种解决方案可能并不优雅。
这里的最佳解决方案实际上取决于您的应用程序。但是有了以上内容,您现在拥有了所有可以让您做出最有效选择的事实。