gpt4 book ai didi

javascript - Firebase 存在 : onDisconnect make a transaction

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:19:20 25 4
gpt4 key购买 nike

在 auth 回调中,我们将一名队长添加到列表中,因为我们有一个新玩家:

var cptns = new Firebase("http://allure.firebaseio.com/cptns");


cptns.transaction(function(current_value) {return current_value + 1;
}, function(error, committed, snapshot) {
$('#captains').text(snapshot.val());
});

我的目标是当玩家/队长离开页面时将 current_value 减 1。我确实尝试了文档建议的方法,但没有成功,因为当我注销时它没有提醒(“未连接”)

var connectedRef = new Firebase('http://allure.firebaseio.com/.info/connected');
connectedRef.on('value', function(snap) {
if (snap.val() === true) {
alert('connected');
} else {
alert('not connected');
}
});

这也不起作用:

     // Get a reference to my own presence status.
var connectedRef = new Firebase("http://presence.allure.firebaseio.com/.info/connected");
connectedRef.on("value", function(isOnline) {
if (!isOnline.val()) {
cptns.transaction(function(current_value) {return current_value -1;
}, function(error, committed, snapshot) {
$('#captains').text(snapshot.val());
});

alert("removed 1");


}

else{ alert("all good do nothing");

}
});

我错过了什么?时间差

(感谢 firebase 为您构建的惊人平台!)

最佳答案

据我所知,您不能在断开连接时使用事务。此外,.info/connected 监控单个客户端与 Firebase 的连接,而不是其他用户的连接。

好消息是存在非常简单,假设每个“团队”不会有成千上万的用户,那么您实际上并不需要交易。相反,您可以:

  • 维护成员列表
  • 在每个成员 onDisconnect 上设置一个存在字段:firebaseRef.child('member/status').onDisconnect().set('offline')
  • 计算客户端上的成员数(相当微不足道)

如果您提供有关客户端结构的更多详细信息(团队的结构、团队中有多少玩家等),那么我可以提供更具体的示例。

关于javascript - Firebase 存在 : onDisconnect make a transaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15762301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com