如何在使用清单 v3 制作的 Chrome 扩展中使用 Web 套接字显示实时数据?

may*_*iya 5 sockets google-chrome service-worker

我正在开发一个简单的扩展,我想在其中显示RealTime通过 Web 套接字连接从我的服务器发送的数据。

我正在使用 chrome 的清单 v3 来实现这一点。我尝试将我的扩展与 Web 套接字连接,通过background.js它作为服务工作者在 chrome 后台运行。

我们无法访问windowService Worker JS(background.js) 中的对象,甚至无法在后台 JS 中添加更多脚本。我从上周开始就读到了这一问题,但仍然没有找到任何解决方案。

有谁知道如何在 Service Worker jS(background.js) 中连接 Web 套接字,以便服务器可以将数据发送到扩展。

任何小小的帮助都会对我有很大帮助。请帮我。

小智 1

我自己也在寻找 WebSocket 的解决方案。

但是,您还提到无法将更多脚本添加到服务工作线程background.js。有一个解决方案;服务人员有一个importScripts()功能(顺便说一句,它在文档/窗口中不可用)。下面是一些例子:

//// Single Script
let scriptURL = '/js/otherScript.js';
try {
    importScripts(scriptURL);
} catch (e) {
    console.error('Error Loading Script', scriptURL);
    console.error(e);
}
Run Code Online (Sandbox Code Playgroud)
//// Multiple Scripts, Easy Way; Limited error detail
let scripts = [ '/js/script1.js', '/js/script2.js', '/js/script3.js' ];
try {
    importScripts(scripts);
} catch (e) {
    console.error(e);
}
Run Code Online (Sandbox Code Playgroud)
//// Multiple Scripts, Manual foreach; More error detail
let scripts = [ '/js/script1.js', '/js/script2.js', '/js/script3.js' ];
let continueImport = true;
scripts.forEach(function(scriptURL) {
    if (continueImport) {
        try {
            importScripts(scriptURL);
        } catch (e) {
            console.error('Error Loading Script', scriptURL);
            console.error(e);
            continueImport = false;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)