google-chrome-extension - 在Chrome扩展程序中实现WebSocket

标签 google-chrome-extension websocket

我在chrome扩展中实现WebSocket。

我在background.js中编写了代码

var websocket;
function createWebSocketConnection() {

    if('WebSocket' in window){
        websocket = new WebSocket(host);
        console.log("======== websocket ===========", websocket);

        websocket.onopen = function() {
            websocket.send("Hello");
        };

        websocket.onmessage = function (event) {
            var received_msg = JSON.parse(event.data);
            var notificationOptions = {
                type: "basic",
                title: received_msg.title,
                message: received_msg.message,
                iconUrl: "extension-icon.png"
            }
            chrome.notifications.create("", notificationOptions);
        };

        websocket.onclose = function() { alert("==== web socket closed 
======"); };
}


当我打开弹出屏幕(index.html)时,将调用方法createWebSocketConnection(),这将创建一个WebSocket连接。

但是,一旦关闭弹出窗口,就会在服务器控制台上打印一条消息,指出“ Web套接字已关闭。

我有以下问题-


我应该在content.js中建立WebSocket连接吗?
每个打开的网页都会有不同的WebSocket吗?
有什么办法可以将WebSocket对象保存在background.js中?
在Chrome扩展程序中实现Web套接字的最佳做法是什么?


提前致谢!

最佳答案

欢呼!

我通过修改manifest.json解决了这个问题

{
...
  "background": {
    ...
    "persistent": true
  },
...
}

关于google-chrome-extension - 在Chrome扩展程序中实现WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48746426/

相关文章:

javascript - 让突变观察者更快、更少占用资源?

javascript - 浏览器插件或扩展程序可以查看页面中运行的 JavaScript 变量的值吗

spring-boot - 如何在spring boot(使用netty服务器)中启用websocket消息压缩deflate(使用rsocket协议(protocol))

plugins - 有没有可用的安全 websocket(wss 协议(protocol))客户端浏览器插件?

javascript - 如何从 REST API 高效且定期刷新 Bootstrap 4 表的内容?

javascript - 谷歌分析 session 多长时间?超过每个 session 的最大命中数,中止命中

javascript - Chrome 扩展程序不会运行 JS onClick

javascript - 为什么我的类构造函数中出现 "Uncaught ReferenceError: this is not defined"?

java - 非常基本的 Spring websocket 返回 404

sockets - 什么是 Socket.IO 发送和获取数据(确认)?