【发布时间】:2016-03-10 12:49:26
【问题描述】:
我有一个 node.js,它监控 Firebase 上的一个队列,用于发送 GCM 推送通知。工作正常。
它还通过.onDisconnect() 更新firebase 上的“在线”状态,因此可以轻松查看Node.js 服务器是否在线并运行。
问题:一段时间后,即使监听器仍处于连接状态且运行正常,它也会显示“断开连接”。
const NODESERVERONLINE="NodeSeverStatus";
var ref = new Firebase(FBURL+FBKEY_GCM_QUEUE);
ref.child("NODESERVERONLINE").set("Online");
ref.child("NODESERVERONLINE").onDisconnect().set("Offline!");
ref.on("child_added",function(snapshot, prevChild){
If (snapshot.key()!=NODESERVERONLINE) DO_GCM_PUSH(snapshot.val());
}, function(errorObject){
console.log("Error reading Firebase: " + errorObject.code);
});
最初,监听器正在运行并且 -NodeSeverStatus 显示 Online。
但是“一段时间后”(几个小时),监听器仍然运行良好,队列正在处理中,但 NodeServerStatus 现在显示为 Offline。
我可以将在线/离线代码移动到侦听器本身中,但这似乎只是一个丑陋的 hack,如果在超时期限内没有新的队列帖子,大概仍然会遇到同样的问题。
这里的最佳做法是什么?谢谢。
【问题讨论】: