在http://www.cometdaily.com/2008/05/15/the-many-shades-of-bayeuxcometd-2/index.html一文中,作者描述了:
通常使用PubSub,开发人员需要为每个用户创建一个通道,以便向客户端传递私有消息。例如,如果一个交易系统想要通知用户已完成的交易,那么诱惑就是创建一个像/trade/a_ user _id这样的通道,每个用户都会订阅他们自己的通道。这种方法可以工作,但并不是解决此问题的最合理的资源方法,需要安全代码来防止未经授权的客户端订阅其他用户通道。
为了实现特定用户的消息,服务和广播频道之间的权衡是什么?我理解交易的安全方面,但是资源开销呢?我不明白为什么与广播频道一起使用的资源会比自定义路由服务的资源更多。如果你能解释为什么一个比另一个更适合用例,而不是一个明智与否的总括声明,那将有助于我做出决定。
发布于 2016-06-14 08:48:08
这篇文章很老了,它指的是CometD 1,而我们现在在CometD 3。您可能想要检查CometD网站上的更新并阅读CometD 3文档。
广播与服务频道背后的概念仍然适用于CometD 3。
服务器为创建的每个信道分配数据结构,即为广播或服务信道。
在那篇文章的示例中,比较了创建N个广播频道--每个user_id一个,而只创建一个服务信道。前一种解决方案显然是在服务器上使用比后者更多的资源,而且它很容易被偷看(客户端可以猜到user_id并订阅该通道,从而接收到发送给其他用户的消息)。
对于这种特殊情况,应用程序所需要做的就是向特定客户端传递消息。对于此用例,最好使用服务通道,因为它使用的资源较少(相同的服务器端通道可用于所有用户,而不存在用户接收不指定给他/她的消息的风险),而且更安全。
https://stackoverflow.com/questions/37801232
复制相似问题