我必须创建一种让用户互相聊天的能力。我发现PubNub是解决这个问题的好工具。但它似乎并不像我预期的那么容易(。
用户登录后,他出现在对话的屏幕上。对话存储在我的服务器上的数据库中。 db中的会话行示例: conversationID,conversationName,string - 用空格分隔的用户ID 。 要获取会话列表,我可以向服务器数据库发送请求,获取并显示在屏幕上。此外,我必须订阅所有这些会话渠道。每个会话的频道名称可以是我认为的数据库中的ID号。
另外,我创建了一个用户可以创建对话的屏幕。他可以选择一个或多个随播广告,并向所选用户发送邀请。
然后,当用户向其他人发送邀请时,我必须在我的数据库中添加新的会话记录,以某种方式通知该用户邀请。我怎么能做到这一点?我应该使用PubNub的推送通知吗?如上所述here我必须注册我的应用程序才能获得推送通知,然后我可以向通道发送通知。但是,如果用户尚未订阅此频道,用户将如何获得此通知?我被困在这里。
答案 0 :(得分:8)
首先,关于聊天以及如何构建聊天,如何构建频道等,有很多不同的方法。为了更好地阅读替代方案,我建议使用inbound channel pattern to descrease history API calls。这谈到了一些减少频道混乱的有趣方法,但我会坚持通过你当前的设计进行讨论。
就如何根据当前设计进行处理而言,每个用户应始终为该用户订阅唯一的频道。通过这种方式,您可以使用此频道向用户“发信号”(向其频道发布消息),这可以促进许多工作流程:
您还可以使用Stream Controller add-on为每位用户创建Channel Group。频道组也可以被视为订阅组,因为它是您订阅的一组频道(您不能发布到频道组,只能发布频道)。使用它,在用户 - 客户端,他们将始终订阅他们唯一的频道组,在该组中将拥有唯一的用户频道,以及他们将订阅的所有其他会话频道。
在这种情况下,user-1会向user-2发送邀请以加入对话(服务器将其发布到user-2的唯一通道),user-2回应服务器,如果他们接受, 服务器 然后将新的会话通道添加到user-1和user-2的每个频道组!在客户端,用户实际上都不需要更改任何内容,因为他们已经订阅了他们的频道组。