【问题标题】:Firebase Reconnect After Hibernate with Chrome Background Extension使用 Chrome 后台扩展休眠后 Firebase 重新连接
【发布时间】:2013-01-25 06:55:27
【问题描述】:

我正在使用 firebase 编写 Chrome 背景扩展程序。我注意到的是,当我在 Chrome 打开时休眠我的计算机(Win7)时,与 firebase 的连接断开(正如预期的那样)。但是,当我从休眠状态返回时,它不会自动重新连接,并且我的 .on() 事件不再触发。

我已经查看了 API 文档和 StackOverflow 关于检测断开连接的问题:Detect if Firebase connection is lost/regained

这是我用来测试连接的一些伪代码:

var myFirebase = new Firebase('https://my.firebaseio.com/'); //replace
setInterval(function() {
  myFirebase.child('.info/connected').on('value', function (snap) {
    if (snap.val() === true) {
      console.log('Connected: ' + (new Date()).toString());
    }
    else {
      console.log('Disconnected: ' + (new Date()).toString());
    }
  });
}, 5000);

这在通过网页运行 javascript 时按预期工作 - 它连接,然后在我休眠时断开连接,然后在从休眠状态恢复后很快重新连接。

但是,当它作为谷歌扩展程序的一部分作为背景页面运行时,它会断开连接并且永远不会重新连接。

有没有办法强制重新连接和/或没有按预期工作的原因?

【问题讨论】:

  • 这里是 Firebase 工程师。这当然/应该/有效,但 chrome 扩展环境可能会以某种方式破坏我们的断开连接检测逻辑。如果不是太麻烦,您能否将您的扩展程序(或精简版)通过电子邮件发送给我们(support@firebase.com),以便我们可以更轻松地重现问题并进行调查?谢谢!
  • 附带说明 - 在 setTimeout 内调用 on() 可能不会给您想要的行为。 on() 附加一个回调,该回调会在数据更改时触发。通过每 5 秒调用一次,您将附加一个新的回调。所以 1 分钟后,每次数据更新发生时,你会收到 12 次回调,2 分钟后,24 次等......

标签: google-chrome-extension firebase


【解决方案1】:

您的权限看起来像这样吗?

"content_security_policy": "script-src 'self' https://static.firebase.com https://myfirebase.firebaseio.com https://s-ord-nss-1.firebaseio.com https://s-ord-nss-2.firebaseio.com; object-src 'self'"

您是否在日志中收到任何权限错误?

(只是一种预感——不知道这是否与连接逻辑有关,但我过去曾遇到过权限问题。)

【讨论】:

  • 这是我的权限的样子('REPLACE' 是我的 Firebase 的实际名称:"content_security_policy": "script-src 'self' REPLACE.firebaseio.com s-ord-nss-2.firebaseio.com; object-src 'self '"。在添加 s-ord-nss-2.firebaseio.com 之前,我遇到了权限问题,但除此之外没有任何问题。
  • Andrew 发布了“正确”的 CSP:stackoverflow.com/questions/14007080/…。但是,除非我包含 https://static.firebase.com,否则我似乎会遇到错误,大概是因为我正在下载 firebase.js。无论如何,听起来您的权限不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多