JavaScript轮询Firebase以检查数据中的更改

时间:2018-01-13 12:36:57

标签: javascript firebase firebase-realtime-database polling

尝试通过使用JavaScript聆听Firebase中的更改进行实时刷新时遇到了一些问题。我试图做的是聊天系统。在与另一个用户开始新的聊天时,我将加载两个用户之间的所有聊天。

code

我的Firebase查询:

code

问题是上面的代码在实时'中不起作用。实时,如用户A发送给B时,无需手动刷新页面重新加载聊天记录,用户B应该能够查看来自用户A的最新消息。

上述代码仅在用户B手动刷新页面以再次从Firebase查询时才有效。

是否有从JavaScript到Firebase的轮询以检查更改?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用on value事件自动获取新到达的消息。

问题是on value将返回所有消息值而不是新消息值。

你需要存储时间戳和msg数据,

ref.on('value', function(snapshot){

  //request data from firebase that having message-timestamp greater than last message-timestamp in previous `on-value` event

});`

要获取特定的消息,您需要使用firebase query

   var ref= firebase.database().ref("users/msgtimestamp");
   var query = ref.orderByChild('msgtimestamp'); //write query-logic to get only new message
   query.on('value', function(snapshot) {

   }); 
  

我希望我的回答能帮到你