我试图创建一个“一对一的防火墙数据库Android聊天”。到目前为止是通过使用下面的结构工作的。大字符串表示user_TO_user,KW记录是聊天消息。
chat
D_57f337e7e55df9ca167d0421_TO_O_57f337e7e55df9ca167d0421
-KWd06dvkmcoCJd6fNWs
-KWd7yBoUy-RkEJAlVOB
-KWd8Au5bPAwMsx3gYhp
....
O_57f337e7e55df9ca167d0421_TO_D_57f337e7e55df9ca167d0421
-KWd06da-Cx0qjnPUE3l
-KWd7yBvyLoLd2fiBcia
-KWd8Au3A_5FJZS8S0qz
....
从Android活动中显示特定用户的会话列表,我创建了一个ListView并使用以下命令从Firebase中读取该列表:
String calculated = "O_57f337e7e55df9ca167d0421"; // calculated userId
firebase_chat.orderByKey().startAt(calculated).endAt(calculated + "\uf8ff").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s)
{
// add item to list adapter
}
}
更新:所以,根据VZSG的回答,更好的结构可能是:
这将允许:
>
打开对话屏幕时创建聊天条目
在第一封邮件上创建msgs条目
并以Dinamic方式编写会话名称以获取消息
我的最终解决方案描述如下:https://github.com/cvivek07/firebase_chat/issues/1#issuecomment-260925121
有一种非常简单的方法可以避免重复:在计算组合ID时,按词典对两个用户ID进行排序。这样,无论哪个用户正在寻找另一个,他们将找到一个单一的对话,你不必跳过箍。
例如:
我希望基本上在我的应用程序内翻拍Kik。对于我在firebase聊天应用程序上看到的大多数指南,都有一个主要的消息节点,然后在该节点下面有一个扇出,每个用户都有引用主列表中消息的消息。 根据目前我的Firebase的布局方式,实现类似以下内容会更容易: 因此,当用户向对方发送消息时,我会更新发送者和用户下面的“聊天消息”节点。 有什么理由不这样做吗?我看到每个人都按照我描述的第一种方式进行,但我看
我尝试使用mvp开发一对一的聊天应用程序,当应用程序第一次运行时,聊天工作正常,消息发送给用户。问题是,当我尝试注册另一个帐户并尝试发送消息时,firebase创建了两个不同的聊天室,但我无法获得消息,因为第二个用户没有检测到聊天室已经创建并创建了另一个聊天室,请帮助我?这是我试图发送消息的代码: 最终字符串room_type_1=chat.getSenderUID()+“_”+chat.getR
我正在构建一个使用Firestore存储大多数数据的应用程序。该应用程序具有聊天功能,我正在考虑使用实时数据库。使用Firebase Firestore vs Realtime Database实现此聊天功能有哪些好处?如果没有区别,我应该什么都使用Firestore吗? 附言:我已经阅读了两个https://firebase.google.com/docs/database/rtdb-vs-fi
我们正在构建一个聊天应用程序,一对一聊天是该应用程序的主要目的,所以目前,消息传递速度是我们的第一要务。我们需要一个后端解决方案,我们最初计划使用Firebase实时数据库。但后来Firestore出现了,从那以后,我们看到了Firebase团队对实时数据库Firestore的许多建议。 我们已经使用了实时数据库和Firestore,所以我们非常了解两者的功能和查询能力。对于我们的用例,就特性而言
问题内容: 我想知道为数千名用户编写聊天应用程序的正确方法是什么。 我只是感到困惑,我如何才能每秒使用AJAX或更少的方法来对服务器执行ping操作,并检查MySQL中是否有新记录等,并且服务器负载可以接受。 我目前正在考虑使用jQuery,PHP和MySQL进行编码。 请指教。您的帮助将不胜感激。 问题答案: 客户端 对于需要轮询服务器的任何程序,我建议使用WebSockets。 我写了一个非常