以下是使用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)));
}
将第一个侦听器从客户端连接到数据库时,客户端将打开与服务器的Web套接字连接。然后,它将查询/引用详细信息发送到服务器,服务器又加载初始数据(并将其发回)并在服务器上注册内部侦听器以进行更改。
从那一刻起,如果对相关数据进行了任何更改,服务器将扫描注册列表,并向受影响的客户端发送更新。那些客户反过来提出了正确的事件,例如child_added
和child_removed
。