在文章http://www.cometdaily.com/2008/05/15/the-many-shades-of-bayeuxcometd-2/index.html中,作者描述了:
通常使用PubSub,开发人员认为需要为每个用户创建一个频道,以便向客户端发送私人消息。例如,如果交易系统想要通知用户已完成的交易,那么诱惑是创建像/ trades / a_user_id这样的渠道,并且每个用户将订阅他们自己的渠道。这种方法有效,但不是解决此问题的最合理的方法,并且需要安全代码来防止未经授权的客户端订阅其他用户频道。
为特定用户实施消息的服务和广播频道之间有什么权衡?我理解权衡的安全方面但是资源开销呢?我不明白为什么广播频道将使用的资源多于自定义路由服务的资源。如果你可以解释为什么一个人比另一个更好用于用例,而不是一个明智或不合理的一揽子陈述,那可能有助于我做出决定。
答案 0 :(得分:1)
文章很老,它指的是CometD 1,而我们现在是CometD 3。 您可能需要查看CometD website上的更新并阅读CometD 3 documentation。
广播与服务频道背后的概念对于CometD 3仍然有效。
服务器为每个创建的频道分配数据结构,无论是广播还是服务频道。
在该文章的示例中,比较了创建N个广播频道 - 每个user_id
一个,而不是仅创建一个服务频道。前一种解决方案显然在服务器上使用的资源多于后者,并且它可以偷偷窥视(客户端可以猜测user_id
并订阅该频道,从而接收发往其他用户的消息。 / p>
对于这种特殊情况,所有应用程序需要做的是向特定客户端传递消息。对于此用例,最好使用服务通道,因为它使用较少的资源(可以为所有用户使用相同的服务器端通道,而不存在用户收到未发往他/她的消息的风险)并且它是更安全。