如何在Chrome打包的应用程序中继续收听websocket?

时间:2013-03-16 17:06:28

标签: google-chrome-app

目前,当后台进程始终处于非活动状态时,即使我正在等待来自websocket的数据。有没有办法规避这个?该部门的文档根本不清楚(旧文档等)。什么是'新'和正确的方法呢?

我的清单文件:

{
  "name": "Media 5",
  "manifest_version": 2,
  "description": "Html5 media center app for Chrome",
  "version": "0.1",
  "app": {
    "background": {
      "persistent": true,
      "scripts": ["background.js"]
    }
  },
  "icons": { "16": "small_icon.png", "128": "big_icon.png"     },
  "sandbox": {
    "pages": ["sandbox.html"]
  },
  "permissions": [
    "unlimitedStorage",
    "fullscreen",
    "notifications", 
    "webview"
  ]
}

2 个答案:

答案 0 :(得分:3)

有很多方法可以阻止您的活动页面被卸载,包括此处列出的内容:http://developer.chrome.com/extensions/event_pages.html。尝试其中一个。打开消息端口,或设置chrome.alarms警报大约5秒钟的间隔。我不相信它是记录在案的行为,但事件页面通常在10秒不活动后卸载,所以警报应该让你活着。

我已就此提出a bug;如果你使用websockets,我们可能会更聪明地避免卸载。

答案 1 :(得分:1)

让打包的应用程序保持活力的另一件事是拥有一个活跃的回调。因此,例如,您可以使用setTimeout,其超时值为5,以确保应用程序保持活动状态。这只是一种解决方法,应该有更好的方法来协调websockets和打包应用程序的生命周期。

有一个Chromium错误(https://code.google.com/p/chromium/issues/detail?id=204573)跟踪此问题。

作为一个FYI(因为这令人困惑),Chrome目前忽略了“persistent”:true行。打包应用程序(v2)始终设置为“持久”:false。