我们正在使用PubNub进行实时通信的聊天应用程序.
PubNub允许单个通道组中的2000个通道,之后您可以通过连接订阅最多10个组.
我们目前遇到的问题是我们的后端需要订阅每个现有的通道(通过组),因为我们有一个对命令作出反应的Bot.
我们在node.js中处理这种连接,但是当向组添加通道时,当使用channel_group_add_channel添加超过2000个通道时,PubNub不会出错,而是返回200响应,并且只取出一个前一个通道(不确定是哪个).
因此,我需要检查组中当前通道的数量,以及它是否完整 – 启动一个新组.
问题:
我们可以同时进行多个用户注册,这意味着我们的机器人需要订阅新增的频道.
用于检查我们是否可以向当前组添加更多通道的伪代码.
addChannel(channel) { group.canAdd() .then(group.add(channel)); }
canAdd将使用channel_group_list_channels来检查该组当前有多少个频道.由于javascript的异步性质,我们有竞争条件:
>目前集团拥有1999年的渠道
>两次调用addChannel
>对channel_group_list_channels的两次调用都可以返回1999频道
>我们添加第一个频道(组现在是2000)
>我们添加第二个频道因为我们认为可以
>某些频道被推出群组(坏).
有没有办法在不降低性能的情况下解决这个问题?
请注意,即使像Redis这样的计数器也会遇到相同的问题,因为问题是并发性.
使用PubNub函数创建聊天机器人真正的问题是关于在您的服务器上订阅数千个频道,但函数被提出作为解决方案,促使提问者提及聊天机器人的使用.
这个问题早该回答了……
PubNub Functions已经存在超过一年了,当您可以使用任何聊天机器人服务时,构建聊天机器人很简单:IBM Watson,Gupshup和so many others out there.
PubNub功能允许您点击消息并对其进行更改,编码,拒绝,重定向,无论您需要做什么,因为消息通过PubNub网络飞行而无需点击您的服务器.您只需在Function模块中实现一些代码,这些代码将基于不同的消息传递事件在PubNub网络中执行:发布,在线,您甚至可以设置endpoints.
有关创建聊天机器人的更多资源:
> Chatbots & PubNub
> Create a Chatbot in Under 10 Minutes Using PubNub Functions
> Build a Realtime Chatbot with the Gupshup BLOCK