当前位置: 首页 > 知识库问答 >
问题:

缺少Firebase节点元数据(one2one聊天应用程序)

吕修筠
2023-03-14

我试图创建一个“一对一的防火墙数据库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的回答,更好的结构可能是:

  • 味精
    • a_to_b
      • msg1
      • msg2
      • msg3
      • msg1
      • msg2
      • msg3
        null
        null
        null
        null
        null
        null
        null

      这将允许:

      >

    • 打开对话屏幕时创建聊天条目

      在第一封邮件上创建msgs条目

        null
        null
        null
        null

      并以Dinamic方式编写会话名称以获取消息

      我的最终解决方案描述如下:https://github.com/cvivek07/firebase_chat/issues/1#issuecomment-260925121

共有1个答案

杜弘伟
2023-03-14

有一种非常简单的方法可以避免重复:在计算组合ID时,按词典对两个用户ID进行排序。这样,无论哪个用户正在寻找另一个,他们将找到一个单一的对话,你不必跳过箍。

例如:

  • A to B变为A_to_b
  • B到A变为A_to_b
 类似资料:
  • 我希望基本上在我的应用程序内翻拍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。 我写了一个非常