Javascript 如何同时使用AngularJS和Firebase网站向所有人发送更新?
所以,假设我和3个朋友同时从3台不同的计算机上使用同一个网站。我们每个人都有存储在阵列中的配置文件,这些配置文件看起来有点像:Javascript 如何同时使用AngularJS和Firebase网站向所有人发送更新?,javascript,angularjs,firebase,firebase-realtime-database,httprequest,Javascript,Angularjs,Firebase,Firebase Realtime Database,Httprequest,所以,假设我和3个朋友同时从3台不同的计算机上使用同一个网站。我们每个人都有存储在阵列中的配置文件,这些配置文件看起来有点像: $scope.profilesRanking = [ {name:"Bob", score: 3000}, {name:"John", score: 2500}, {name:"Carl", score: 100} ] 请注意,这些配置文件是按其得分值排序的,我希望实现的是,不必在web浏览器中按刷新按钮,我希望整个站点的更改都能在发生时发生。
$scope.profilesRanking = [
{name:"Bob", score: 3000},
{name:"John", score: 2500},
{name:"Carl", score: 100}
]
请注意,这些配置文件是按其得分值排序的,我希望实现的是,不必在web浏览器中按刷新按钮,我希望整个站点的更改都能在发生时发生。因此,如果Carl和John都获得3000分,所有用户的记分板都应该在不停止任何其他主要过程的情况下更新
所有3个用户应立即看到:
$scope.profilesRanking = [
{name:"John", score: 5500},
{name:"Carl", score: 3100},
{name:"Bob", score: 3000}
]
我正在使用Firebase存储这些数据,但我想知道如何定期检查数据库中的值,而不让请求溢出。我想到的唯一方法就是这样做,我每秒钟向数据库发送一个请求,但我觉得这不是一个很好的方法。我建议您使用
AngularFire
,这是一个使使用AngularJS和Firebase更容易的库。他们的回购协议包含了你需要采取的所有步骤 我建议您使用angular fire
,这是一个使AngularJS和Firebase更容易使用的库。他们的回购协议包含了你需要采取的所有步骤 使用Firebase,您可以添加一个值更改侦听器,无论何时在Firebase存储中更改引用的对象(或任何子对象),该侦听器都会在角度代码中调用回调
这就是你如何做到的:
function startListening(){
var ref = new Firebase('yoururl');
ref.on('value').then(function(snapshot){
// This callback will be called every time the object referenced by 'ref'
// or any children, is changed.
$scope.$apply(function(){
$scope.profilesRanking = snapshot.val();
});
});
}
$scope.$apply
用于让angular知道它应该触发摘要循环
这是可能的,因为在幕后,Firebase使用WebSocket传输数据,比常规异步http请求的速率更高 使用Firebase,您可以添加一个值更改侦听器,无论何时在Firebase存储中更改引用的对象(或任何子对象),该侦听器都会在角度代码中调用回调 这就是你如何做到的:
function startListening(){
var ref = new Firebase('yoururl');
ref.on('value').then(function(snapshot){
// This callback will be called every time the object referenced by 'ref'
// or any children, is changed.
$scope.$apply(function(){
$scope.profilesRanking = snapshot.val();
});
});
}
$scope.$apply
用于让angular知道它应该触发摘要循环
这是可能的,因为在幕后,Firebase使用WebSocket传输数据,比常规异步http请求的速率更高 如果您使用的是Firebase,则无需反复检查服务器以获取更新。这就是Firebase数据库的第一项工作,就是保持你对所有客户的引用同步。你能给我们看看你的Firebase代码吗?@frosty到目前为止,它只是getter和setter。我有点希望我的数据不用按按钮就能更新。这就是firebase的魔力。让我举一个例子,如果你使用的是Firebase,你不需要一次又一次地检查服务器的更新。这就是Firebase数据库的第一项工作,就是保持你对所有客户的引用同步。你能给我们看看你的Firebase代码吗?@frosty到目前为止,它只是getter和setter。我有点希望我的数据不用按按钮就能更新。这就是firebase的魔力。让我举个例子。