PubNub:我可以将我的用户分成几组,并只从一个频道上的一组接收消息吗?

PubNub: Can I divide my users to groups and get messages only from one group on one channel?

我有两种类型的用户“经理”和“学生”订阅了一个频道“all.channel',我希望应用以下行为:

一个。来自 'Managers' 组的用户将获得从用户组“Managers”和“Students”发布的所有消息。

b。来自组 'Students' 的用户将仅从组 'Managers' 的用户那里获得发布消息(不会看到 'Students' 发布消息)。

我的想法是创建两个频道:

一个。 'all.channel' - 'Managers' 和 'Students' 用户将发布到它.只有“经理”用户会订阅它。 pubnub 'After Publish' 函数只会将 'Managers' 消息链接到另一个名为 'all.student.channel'

的频道

b。 'all.student.channel' - 只有 'Students' 会订阅它。

我的问题是 PubNub 中是否有任何内置工具或功能可以使它变得不那么复杂,甚至只有一个渠道?

经理和学生配置

Security is important. Students should not see Manager's private messages.

您需要考虑安全性。只有 managers 应该能够看到 manager 条消息。考虑为经理多路复用您的频道。经理也会订阅 root.managers 频道和 root.students 频道。而 students 仅订阅 root.students 频道。这样您就可以向 root.* 上的管理员授予 read/write 权限。您可以向 root.students.roomID 至 read/write 的学生授予访问权限。

You may also consider ChatEngine an open and extensible chat SDK and APIs for building group chat.

下面有更多频道配置选项供您考虑。

频道配置选项

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

通配符订阅

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

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

频道组

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

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

多路复用

最大可寻址通道:( ~50 )

您可以通过订阅 通配符频道频道组Presence 事件流的组合来复用您的连接频道 等等。建议将多路复用通道保持在 50 以下以获得最佳设备性能。

流过滤:

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

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