我使用便携式本机客户端(pNaCL)库为Chrome构建了一个打包的应用程序。由于我的应用程序使用套接字与网络上的服务进行通信,因此我希望在关闭应用程序的主窗口时该通信是持久的。为了管理这个,我为我的应用程序设置了background.js文件,以便为pnacle模块创建标记。服务连接在后台运行良好,一切似乎都很开心。现在,在某些条件下,我的应用程序需要向用户显示信息。对于图片和内容,我只需打开chrome.app.window并发布包含内容的消息,但由于有时这些信息是视频,因此将信息通过网络传输到pnacl似乎没有意义。后台页面中的模块,然后再次将其流式传输到弹出窗口。使用2D辣椒APIS,我可以将视频帧直接绘制到pnacl模块显示区域(标签)中,但是因为该区域存在于背景页面内,所以用户看不到它。 (fwiw背景页面无法显示)
在弹出窗口中,是否有一种有效的方式以某种方式链接或显示背景页面中的区域?
(注意:我已经将听众和消息处理程序排除在外,因为它们非常详细,并且不会提供很多有用的信息。)
另请注意,我对各种视频流工具和API非常熟悉。此视频格式是我连接的服务软件专有的,我需要在我的pNaCL模块中手动解码。
Sample manifest:
{
"name": "__MSG_packageName__",
"short_name": "__MSG_packageShortName__",
"version": "1.2.3.4",
"manifest_version": 2,
"minimum_chrome_version": "36.0",
"description": "__MSG_packageDescription__",
"permissions": [
"storage",
"unlimitedStorage",
{ "socket": [ "tcp-connect:*:*", "resolve-host" ] },
"fullscreen",
"system.network",
"alwaysOnTopWindows",
"https://accounts.google.com/*",
"https://www.googleapis.com/*"
],
"icons": { "16": "./images/icon16.png",
"48": "./images/icon48.png",
"128": "./images/icon128.png" },
"app": {
"background": {
"scripts": [
"script/background.js" ],
"persistent": true
}
},
"default_locale": "en"
}
background.js
function main ()
{
var div = document.createElement('div')
div.setAttribute('id', 'listener');
var embed = document.createElement( 'embed' );
embed.setAttribute( 'name', 'nacl_module' );
embed.setAttribute( 'id', 'student_nacl' );
embed.setAttribute( 'src', 'student.nmf' );
embed.setAttribute( 'type', 'application/x-pnacl' );
div.appendChild( embed );
document.body.appendChild(g_listener_div);
connectListeners();
// show the popup window
chrome.app.window.create('main.html', {
'bounds': {
'width': 400,
'height': 400,
'top': 10,
'left': 10
}, null );
}
main();