我正在创建一个随机聊天应用程序,用户按下按钮并与其他用户配对,然后他们就可以聊天了。
我计划使用Parse进行用户控制和文件存储,并使用pubnub进行聊天。
我的问题是,配对和连接两个用户并将它们放在一起聊天的正确方法是什么?
让我们说用户1按下搜索按钮开始搜索另一个用户,然后将解析数据库中user1的状态更新为“搜索”,然后应用程序向数据库查询另一个状态也在“搜索”的用户。查询返回user2,并且从组合在一起的两个用户名创建新的聊天频道(例如,Pubnub聊天频道:'user1user2')。然后将User1放入该聊天频道并开始聊天活动。这是我感到困惑的地方,我的应用程序将如何知道它需要将user2放入与user1的聊天中?因为根据我的想法,user2还按下了搜索按钮来向另一个用户查询解析数据库,因此可以将它们与另一个随机用户而不是user1进行聊天。
对于实现这一目标的正确方法的任何帮助都将非常感谢,谢谢。
答案 0 :(得分:1)
这是一个很酷的用例。以下是如何开始使用此设计的一些见解。
ch_user123
和cg_user123
。cg_idle
,cg_searching
,cg_active
的服务器管理频道组。此频道组将包含未主动参与聊天且未搜索聊天伙伴的用户的所有唯一用户频道名称。当用户登录(成功)后,您的服务器会将该用户的唯一渠道添加到渠道组idle
和用户的唯一渠道组(IOW - 将ch_user123
添加到{{1} }和cg_user123
当用户点击搜索聊天伙伴按钮时,您的服务器应用
cg_idle
频道组cg_idle
渠道组cg_searching
list_channels
获取聊天伙伴候选人列表cg_idle
候选人列表cg_idle
的频道以获取更新列表) - IOW,返回< em>第4步 cg_idle
删除该用户的频道并将其添加到cg_idle
cg_active
移除搜索用户的频道,并将其添加到cg_searching
cg_active
添加到1234-5678-9ABC
和cg_user123
。这两个用户没有订阅相同的频道来开始彼此的聊天冒险。cg_user456
中删除这两个用户的唯一渠道,将其添加到cg_active
,并从两个用户的唯一渠道组中删除共享聊天渠道。我可以想到上面需要解决的一些细节和功能以及您的服务可以控制的竞争条件,但这应该揭示如何使用通道组来控制用户的状态以及创建用户的名称目录。