【问题标题】:Posting same payload on two or more pubnub channels在两个或多个 pubnub 频道上发布相同的有效负载
【发布时间】:2015-08-07 03:19:59
【问题描述】:
在两个或多个 PubNub 频道上发布相同的消息负载是否会按比例增加所需的网络带宽?
我们正在使用移动数据网络,因此对带宽使用非常谨慎。
【问题讨论】:
标签:
ios
objective-c
pubnub
【解决方案2】:
使用 PubNub 渠道组模拟多渠道发布
另一种模拟多渠道发布的方法是将Channel Groups 与临时渠道一起使用。它的工作原理是这样的:
- 每个客户端都订阅自己唯一的频道组:cg_user1、cg_user2 等。
- 当你想将消息发布到多个频道时,你只需要知道谁需要接收消息。我将假设您能够在服务器端确定这一点或将用户列表 (UUID) 传递给您的服务器。因此,将您的消息发布到服务器(使用 UUID 列表,除非您可以在服务器上弄清楚这一点)。
- 然后您的服务器会生成一个临时频道(如果您愿意,可以使用 UUID 生成器),然后遍历用户列表并将新的临时频道添加到每个用户的唯一频道组(cg_user1 等)。
- 然后您的服务器将消息发布到新的临时通道。现在拥有该频道的所有频道组都将收到该消息。
- 一旦发布成功(发布成功),您就可以从每个频道组中删除该频道。或者,您让客户端在客户端收到消息后删除通道(可能是从历史记录或消息追赶中提取消息)。
是的,您仍在多次调用 PubNub 以将频道添加到每个频道组(将来可能是添加频道到频道组列表),但您节省的是已发布消息的数量(减少消息计数)来自客户端。
您也可以将消息发布到服务器并让服务器发布到唯一的频道(而不是频道组),其中每个频道都是私人用户频道。相同的结果但多次发布会增加您的消息数量,即使只是增加几条,除非您有数千个要发布到的频道。