我正在使用 Firebase 来监控整个建筑物内的机器。 所以架构是多个前端和多台机器。
在某个时刻,我希望能够在这些机器上触发一些操作,例如:
我习惯 Actionscript ,有 NetConnection 和 可以调用远程方法的客户端对象。
- Firebase 中有类似内容吗?
- 您如何轻松实现此功能?
我想到了一个使用数组的消息框,其中消息可以是如下数据结构:
{
'client_id': 'xxx-yyy-zzz',
'name': 'takeScrenshot',
'body': { 'creator': 'my-name' },
'timestamp': 1406214344
}
如何运作
但要正确实现它必须做很多工作,有没有人知道是否有一种简单的方法来实现这种功能?
答案 0 :(得分:4)
由于Firebase是一个功能强大的后端服务,可扩展,并且除了SDK之外还有一个RESTful API(遗憾的是还没有用于Python),它通常最直接地使用它,而不是在顶层设计API服务它的。
一种快速有效的方法是使用queue approach。让每个客户端将数据写入in/
路径,并让该事件的收件人在该路径上侦听child_added
。然后执行远程调用,并将数据写回请求客户端的out/
路径。
<强>客户端强>
// send it
var ref = new Firebase(QUEUE_URL);
var request = ref.child('in').push( requestData );
// wait for a reply and remove after processing
ref.child('out/'+request.name()).on('value', function(snap) {
if( snap.val() !== null ) {
console.log(snap.val());
request.remove();
// stop listening
snap.ref().off();
}
});
远程服务
var ref = new Firebase(QUEUE_URL);
// listen for queue events
ref.child('in').on('child_added', function(snap) {
/*
... process queue event ...
*/
doneProcessing(snap, resultData);
});
function doneProcessing(snap, results) {
ref.child('out/'+snap.name()).set(results);
snap.ref().remove();
}