Android - 使用parse和pubnub

时间:2015-11-16 14:13:38

标签: android parse-platform chat pubnub instant-messaging

我正在创建一个随机聊天应用程序,用户按下按钮并与其他用户配对,然后他们就可以聊天了。
我计划使用Parse进行用户控制和文件存储,并使用pubnub进行聊天。

我的问题是,配对和连接两个用户并将它们放在一起聊天的正确方法是什么?

让我们说用户1按下搜索按钮开始搜索另一个用户,然后将解析数据库中user1的状态更新为“搜索”,然后应用程序向数据库查询另一个状态也在“搜索”的用户。查询返回user2,并且从组合在一起的两个用户名创建新的聊天频道(例如,Pubnub聊天频道:'user1user2')。然后将User1放入该聊天频道并开始聊天活动。这是我感到困惑的地方,我的应用程序将如何知道它需要将user2放入与user1的聊天中?因为根据我的想法,user2还按下了搜索按钮来向另一个用户查询解析数据库,因此可以将它们与另一个随机用户而不是user1进行聊天。

对于实现这一目标的正确方法的任何帮助都将非常感谢,谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个很酷的用例。以下是如何开始使用此设计的一些见解。

设置

  • 将为每位用户分别分配一个唯一的频道名称和唯一的channel group,例如ch_user123cg_user123
  • 将有三个名为cg_idlecg_searchingcg_active服务器管理频道组。此频道组将包含未主动参与聊天且未搜索聊天伙伴的用户的所有唯一用户频道名称。

用户登录

当用户登录(成功)后,您的服务器会将该用户的唯一渠道添加到渠道组idle和用户的唯一渠道组(IOW - 将ch_user123添加到{{1} }和cg_user123

搜索聊天合作伙伴

当用户点击搜索聊天伙伴按钮时,您的服务器应用

  1. cg_idle频道组
  2. 中删除其用户唯一频道
  3. 将其用户唯一渠道添加到cg_idle渠道组
  4. cg_searching list_channels获取聊天伙伴候选人列表
  5. cg_idle候选人列表
  6. 中选择一个用户频道
  7. 检查以确保所选候选人仍然空闲
  8. 如果用户不再闲置,那么他们处于活动状态或搜索 - 从空闲列表中选择另一个用户(需要再次列出cg_idle的频道以获取更新列表) - IOW,返回< em>第4步
  9. 如果用户仍处于空闲状态,请从cg_idle删除该用户的频道并将其添加到cg_idle
  10. cg_active移除搜索用户的频道,并将其添加到cg_searching
  11. 向两个用户的唯一渠道组添加新生成的渠道名称(您可以使用UUID API生成UUID格式名称)。例如,将新频道名称cg_active添加到1234-5678-9ABCcg_user123。这两个用户没有订阅相同的频道来开始彼此的聊天冒险。
  12. 您的服务器现在可以向此新频道发布消息,将用户介绍给对方(您的客户端应用可以显示头像,用户信息,甚至是start the video stream if you are doing that)。
  13. 如果用户点击“退出”按钮,则会从cg_user456中删除这两个用户的唯一渠道,将其添加到cg_active,并从两个用户的唯一渠道组中删除共享聊天渠道。
  14. 我可以想到上面需要解决的一些细节和功能以及您的服务可以控制的竞争条件,但这应该揭示如何使用通道组来控制用户的状态以及创建用户的名称目录。