【问题标题】:How to subscribe 1000 pubnub channels from the client?如何从客户端订阅 1000 个 pubnub 频道?
【发布时间】:2018-08-07 05:20:08
【问题描述】:

我有一个使用 pubnub 的网络客户端,需要订阅 1000 个频道。但是一旦我调用 pubnub.subscribe(allChannels),服务器就会返回 500。

我没有发现任何限制说明它为什么不能。

【问题讨论】:

标签: pubnub


【解决方案1】:

实际上,您可以订阅的频道数量没有硬性限制。但如果您要订阅超过 20-30 个频道,通常建议改用频道组,它允许您创建频道集合并为该集合命名。然后,您的客户只需订阅频道组而不是单个频道。 https://www.pubnub.com/developers/tech/key-concepts/stream-controller/channel-groups/

【讨论】:

    【解决方案2】:

    订阅频道的数量是有限的,这就是我测试过的:640 个频道。并且订阅了 640 个频道仍然是成功的,但是如果您再订阅一个,就会开始发生错误(服务器返回 500)并且您的所有 pubnub 连接都会被破坏。

    看来你可以同时订阅更多频道(官网建议50个频道,但我试过一次订阅400个频道,成功了)

    所以总限制 640 是我发现的。

    【讨论】:

    • 鑫,请看下面我的回答...您可能看到限制为640个频道的原因可能是由于频道的名称长度,以及订阅的URI的后续长度.频道组是您的最佳选择……如果您需要更多帮助,请联系 support@pubnub.com。
    • 辛,托德是对的。没有“硬”限制,这是由于 HTTP 的 URI 限制。因此,所有频道的字符总数是限制(加上其他 URI 路径和查询参数字符)。因此,频道组允许您将频道列表保留在 PubNub 服务器端,并使用“指向”该频道列表的频道组名称。每个频道组最多可以有 2000 个频道,每个用户(设备)可以订阅 10 个频道组,总共 2 万个频道。这对你来说足够了吗? :)
    【解决方案3】:

    订阅超过 1000 个频道

    您已经知道要订阅的频道列表,Channel Groups 将帮助您获得每组 2,000 个频道。还有一些选项可以使用通配符订阅无限数量的频道

    每个channel group 可以拥有2,000 个频道。这符合您订阅 1,000 个频道的需求。

    ? 还要记住Security is important。请记住,您应该保护您的数据。

    以下更多频道订阅选项供您考虑。

    频道订阅选项

    适用于 PubNub SDK 4.0 及更高版本。多路复用 SDK 实际上最多支持大约 50 个通道。您可以进一步增加此数字,但设备性能会受到影响。最好利用PubNub Stream Controller 核心产品的Channel Group 功能。 Stream Controller 包括以下频道订阅增强功能。

    通配符订阅

    最大可寻址频道:(无限制)

    PubNub 也支持Wildcard Subscriptions using a Hierarchical dot notation。今天在 PubNub,您可以订阅频道 "a.b.*" 并在 a.b 以下的任何频道接收消息。您可以发布到频道 "a.b.c" 并在通配符订阅中接收消息。请注意,当前层次结构支持的最大深度为 3。例如 "a.b.*" 很好,但不支持 "a.b.c.*"

    频道组

    最大可寻址通道:( 2,000 ✕ 10 = 20,000 )

    使用 PubNub 频道组动态控制设备的数据流馈送。您可以远程控制设备订阅的流媒体,并从频道列表中动态添加删除频道。您最多可以多路订阅 10 个频道组,每个频道组最多可以包含 2,000 个频道。

    多路复用

    最大可寻址频道:( ~50-500 )

    您可以通过订阅Wildcard ChannelsChannel GroupsPresence Event Stream Channels等组合来复用连接。建议将多路复用通道保持在 50 以下,以获得最佳设备性能。

    流过滤

    最大可寻址频道:(无限制)

    Stream Filter 允许订阅者应用过滤器以仅接收满足过滤器条件的消息。消息过滤器由订阅客户端设置,但它应用于服务器端,从而防止不需要的消息(那些不符合过滤器条件的消息)到达订阅者。流过滤器由两个组件实现:发布时的元字典和订阅时的过滤器表达式。过滤器应用于客户端订阅的所有频道。当消息被加密时(在初始化 PubNub 时使用加密密钥),元字典是纯文本,以便 PubNub 网络可以根据需要正确应用过滤器。重要的是只包含非机密或其他需要加密的信息。

    【讨论】:

      【解决方案4】:

      您需要更正语法。

      pubnub.subscribe({
         channels:allChann
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多