Android-使用parse和pubnub在随机聊天应用中正确配对和连接两个用户

我目前正在创建一个随机聊天应用程序,用户可以在其中按下按钮并与另一个用户配对,然后他们可以聊天.我计划使用Parse进行用户控制和文件存储,并使用pubnub进行聊天.我的问题是是配对和连接两个用户并将他们放在一起聊天的正确方法?假设user1按下搜索按钮开始搜索另一个用户,然后将解析数据库中user1的状态更新为“正在搜索”,然后该应用程序在数据库中查询另一个状态也是“正在搜索”的用户.该查询将返回user2,并根据合并在一起的两个用户名创建一个新的聊天频道(例如Pubnub聊天频道:“ user1user2”).然后将User1放入此聊天频道,并开始聊天活动.这是我感到困惑的地方,然后我的应用程序将如何知道它需要将user2与user1聊天?因为根据我的想法,user2还按下了搜索按钮以查询解析数据库中的另一个用户,因此可以将其与另一个随机用户而不是user1进行聊天.

非常感谢在正确方法上实现这一目标的任何帮助,谢谢.

解决方法:

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

设定

>将为每个用户分配一个唯一的频道名称和一个唯一的channel group,例如ch_user123和cg_user123.
>将有三个服务器管理的通道组,分别为cg_idle,cg_searching和cg_active.该频道组将包含未积极参与聊天且未搜索聊天伙伴的用户的所有唯一用户频道名称.

用户登录

用户成功登录后,服务器会将该用户的唯一通道添加到空闲的通道组和用户的唯一通道组(IOW-将ch_user123添加到cg_user123和cg_idle

搜索聊天伙伴

当用户单击“搜索聊天伙伴”按钮时,您的服务器应用程序将

>从cg_idle频道组中删除其用户唯一频道
>将其用户唯一频道添加到cg_searching频道组
> cg_idle的list_channels以获得聊天伙伴候选列表
>从cg_idle候选列表中选择一个用户频道
>检查以确保所选的候选人仍然空闲
>如果用户不再空闲,则他们处于活动状态或正在搜索-从空闲列表中选择另一个用户(需要再次列出cg_idle的频道以获取更新的列表)-IOW,返回到步骤4
>如果用户仍然空闲,请从cg_idle删除该用户的频道并将其添加到cg_active
>从cg_searching中删除搜索用户的频道并将其添加到cg_active
>将新生成的频道名称(您可以使用UUID API生成UUID格式名称)添加到两个用户的唯一频道组中.例如,将新的频道名称1234-5678-9ABC添加到cg_user123和cg_user456.这两个用户没有订阅相同的频道来开始彼此的聊天之旅.
>您的服务器现在可以将消息发布到此新频道,以向用户介绍彼此(您的客户端应用可以显示头像,用户信息,甚至显示start the video stream if you are doing that).
>如果任一用户单击“离开”按钮,则两个用户的唯一频道将从cg_active中删除,添加到cg_idle,并且共享聊天频道也从两个用户的唯一频道组中删除.

我可以想到上面需要解决的一些细节和功能,以及服务可以控制的竞争条件,但这应该揭示如何使用通道组来控制用户的状态以及创建名称目录的方式.用户.

上一篇:与Android中的Xmpp Server保持活动连接的最佳方法


下一篇:php – 如何知道用户何时关闭浏览器?聊天应用程序