在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");
}
});
我错过了什么? TIA
(感谢firebase为您构建的神奇平台!)
答案 0 :(得分:2)
据我所知,你不能在断开连接时使用交易。另外,.info/connected
会监控各个客户端与Firebase的连接,而不是其他用户的连接。
好消息是存在非常简单,并且假设每个“团队”不会有数十万用户,您实际上并不需要交易。相反,你可以:
firebaseRef.child('member/status').onDisconnect().set('offline')
如果您提供有关客户端结构的更多详细信息(团队的结构,团队中有多少玩家,那么我)可以提供更具体的示例。