开发像whatsapp这样的实时应用程序的问题



我想在 Flutter 中创建一个实时应用程序,就像 WhatsApp 一样。但是,我不知道如何进行后端编码(Firebase(,这将确保将在该应用程序中注册的用户之间的私人消息传递?

请问有什么教程可以涵盖我的这个问题吗?

Firebase在后端数据库方面提供了两种解决方案。

1(实时数据库 - Firebase的原始数据库实现。它使用 nosql 数据结构来实时发送和接收数据。数据基于大型 json 树状结构,连接的客户端可以读取和写入该结构(具有足够的权限(。在我看来,该解决方案为简单数据类型和最小数据提供了轻量级结构。

2( Cloud Firestore - Firebase最新的数据库实现。也使用 nosql 数据结构,但它使用集合和文档结构,而不是一个大型 JSON 树,其中一个集合可以有多个文档。在我看来,该解决方案可以更好地扩展,以便于查看分层数据

数据库摘要

实时数据库将所有数据存储在大型 json 树中,Cloud Firestore 将数据存储在集合/文档结构中(无论如何,它与 json 非常相似(。建议新项目开始使用Cloud Firestore,而旧项目可以继续使用实时数据库。

这里有两种解决方案的摘要 https://firebase.google.com/docs/database/rtdb-vs-firestore

即时通讯应用程序

您可以定义一个带有"消息"的集合的Cloud Firestore数据库,该集合将保存许多文档。每个文档都包含一些数据类型
,例如 - 消息(例如"你好!
- 发件人(例如"test@gmail.com"(- 时间戳(例如"2020 年 5 月 18 日下午 3:08:52 UTC+1"(

所以数据库看起来像(使用 json 来显示关系(

{
"messages": {
"document1": [
{
"message": "Hello!"
},
{
"sender": "test@gmail.com"
},
{
"timestamp": "May 18, 2020 at 4:00:00 PM UTC+1"
}
],
"document2": [
{
"message": "Hi test!"
},
{
"sender": "jim@gmail.com"
},
{
"timestamp": "May 18, 2020 at 4:01:00 PM UTC+1"
}
]
....
}
}

认证

Cloud Firestore有许多不同的登录方法,首先您可以简单地实现"电子邮件/密码",这允许客户端使用他们的凭据注册,并在 Cloud Firestore 中将用户 ID 与用户相关联。然后,可以在数据库规则中使用用户 ID,以仅允许经过身份验证的用户从数据库中读取和写入(可以进一步定制(。示例数据库规则如下所示

// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}

Firebase 在此处提供有关数据模型的文档 https://firebase.google.com/docs/firestore/data-model

有很多克隆whatsapp文章或项目,感谢谷歌,你可以检查一些:

https://medium.com/quick-code/creating-whatsapp-clone-using-firebase-f7971f32b35 https://github.com/pauek/whatsapp-firebase https://medium.com/flutter-community/building-a-chat-app-with-flutter-and-firebase-from-scratch-9eaa7f41782e

最新更新