【问题标题】:Posting same payload on two or more pubnub channels在两个或多个 pubnub 频道上发布相同的有效负载
【发布时间】:2015-08-07 03:19:59
【问题描述】:

在两个或多个 PubNub 频道上发布相同的消息负载是否会按比例增加所需的网络带宽?

我们正在使用移动数据网络,因此对带宽使用非常谨慎。

【问题讨论】:

  • Jasper 查看Pipelining Messages into One TCP Packet 节省的带宽。这很好用,但是它需要您进行自定义编码工作。因此,您需要决定是否要实现这种额外的性能提升和带宽节省。

标签: ios objective-c pubnub


【解决方案1】:

每个发布操作都是一个单独的请求,所以是的。当您在多个频道上发布时,您会发出多个请求,并且会成比例地增加您的带宽消耗。

您可以使用另一个通道 (channel-c),而不是在两个通道 (channel-a, channel-b) 上发布相同的消息。然后,channel-a 和 channel-b 的订阅者将另外订阅 channel-c,并可以接收用于组合组的消息。

频道是临时资源,因此您可以根据需要创建任意数量的频道 - http://www.pubnub.com/knowledge-base/discussion/494/how-many-channels-can-i-use

【讨论】:

【解决方案2】:

使用 PubNub 渠道组模拟多渠道发布

另一种模拟多渠道发布的方法是将Channel Groups 与临时渠道一起使用。它的工作原理是这样的:

  1. 每个客户端都订阅自己唯一的频道组:cg_user1、cg_user2 等。
  2. 当你想将消息发布到多个频道时,你只需要知道谁需要接收消息。我将假设您能够在服务器端确定这一点或将用户列表 (UUID) 传递给您的服务器。因此,将您的消息发布到服务器(使用 UUID 列表,除非您可以在服务器上弄清楚这一点)。
  3. 然后您的服务器会生成一个临时频道(如果您愿意,可以使用 UUID 生成器),然后遍历用户列表并将新的临时频道添加到每个用户的唯一频道组(cg_user1 等)。
  4. 然后您的服务器将消息发布到新的临时通道。现在拥有该频道的所有频道组都将收到该消息。
  5. 一旦发布成功(发布成功),您就可以从每个频道组中删除该频道。或者,您让客户端在客户端收到消息后删除通道(可能是从历史记录或消息追赶中提取消息)。

是的,您仍在多次调用 PubNub 以将频道添加到每个频道组(将来可能是添加频道到频道组列表),但您节省的是已发布消息的数量(减少消息计数)来自客户端。

您也可以将消息发布到服务器并让服务器发布到唯一的频道(而不是频道组),其中每个频道都是私人用户频道。相同的结果但多次发布会增加您的消息数量,即使只是增加几条,除非您有数千个要发布到的频道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2016-11-30
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多