聊天应用程序如何知道在生成新消息时从后端数据库服务器提取?

问题描述 投票:1回答:1

以下是使用Firebase开发的聊天应用程序的代码片段,并以原生为基础进行反应。

on = callback =>
        this.ref
          .limitToLast(20)
          .on('child_added', snapshot => callback(this.parse(snapshot)));
     }

每当有新消息发布到Firebase时,应用程序中的回调将与firebase db同步并检索最后20条消息。

我理解推送通知如何工作,并且知道应用内消息不是推送通知。但我没有看到一篇很好的技术文章,解释了如何在应用聊天消息中同步前端应用和后端数据库。我认为从app中定期提取后端数据库服务器不是最有效的方法。

以下是与上述代码相关的更多Firebase代码:

import firebase from 'firebase'; // 4.8.1

class Fire {
  constructor() {
    this.init();
    this.observeAuth();
  }

  init = () =>
    firebase.initializeApp({
      ....
    });

  observeAuth = () =>
    firebase.auth().onAuthStateChanged(this.onAuthStateChanged);

  onAuthStateChanged = user => {
    ...
  };

  get uid() {
    ...
  }

  get ref() {
    return firebase.database().ref('messages');
  }

  parse = snapshot => {
    ...
    return message;
  };

  on = callback =>
    this.ref
      .limitToLast(20)
      .on('child_added', snapshot => callback(this.parse(snapshot)));
 }
firebase react-native firebase-realtime-database
1个回答
1
投票

将第一个侦听器从客户端连接到数据库时,客户端将打开与服务器的Web套接字连接。然后,它将查询/引用详细信息发送到服务器,服务器又加载初始数据(并将其发回)并在服务器上注册内部侦听器以进行更改。

从那一刻起,如果对相关数据进行了任何更改,服务器将扫描注册列表,并向受影响的客户端发送更新。那些客户反过来提出了正确的事件,例如child_addedchild_removed

© www.soinside.com 2019 - 2024. All rights reserved.