Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript轮询Firebase以检查数据中的更改_Javascript_Firebase_Firebase Realtime Database_Polling - Fatal编程技术网

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

JavaScript轮询Firebase以检查数据中的更改,javascript,firebase,firebase-realtime-database,polling,Javascript,Firebase,Firebase Realtime Database,Polling,我在尝试使用JavaScript实时刷新Firebase中的更改时遇到了一些问题。我试着做的是一个聊天系统。在与另一个用户开始新的聊天时,我将加载两个用户之间的所有聊天 code 我的Firebase查询: code 问题是上面的代码不能“实时”工作。实时,如用户A发送给B时,用户B应该能够看到用户A的最新消息,而无需手动刷新页面以重新加载聊天记录 只有当用户B手动刷新页面以再次从Firebase查询时,上述代码才起作用 是否有类似于从JavaScript到Firebase的轮询来检查更改

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

code
我的Firebase查询:

code
问题是上面的代码不能“实时”工作。实时,如用户A发送给B时,用户B应该能够看到用户A的最新消息,而无需手动刷新页面以重新加载聊天记录

只有当用户B手动刷新页面以再次从Firebase查询时,上述代码才起作用

是否有类似于从JavaScript到Firebase的轮询来检查更改


谢谢

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

问题是值上的
将返回所有消息值,而不是新值

您需要将时间戳与消息数据一起存储

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

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

});`
要获取特定消息,您需要使用
firebase查询

   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) {

   }); 
我希望我的回答能帮助你


如果您想改变样式,可以先使用
once()
,然后使用
on()
进行后续更改。但是Tuschar的回答说明了如何获得实时更新:在(…)
上使用
,而不是在(…)
上使用
一次,当服务器上的数据库发生更改时,值的另一端
将始终调用。@TusharAcharekar是的,但这些代码应该包装在函数中,对吗?你通常在哪里调用这个函数?因为从loadChatDetail(),我将调用一次。从那时起,每当Firebase中有任何更新时,我都想刷新它。但是,如果我将代码嵌套为来自已编辑部分的代码,它将在从once()获取后第二次从Firebase获取。如何将所有新消息绑定到视图。。。?你在用角形。。。?我认为您的问题在于。数据绑定@hyperfkcbNope我没有使用角度。我只使用JavaScript:)