如何在chrome.app.window的后台页面中显示Native客户端窗口?

时间:2014-10-09 20:01:06

标签: google-chrome google-nativeclient google-chrome-app

我使用便携式本机客户端(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();

0 个答案:

没有答案