微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不属于您的站点上的浏览器中处理 WebSockets?

如何解决如何在不属于您的站点上的浏览器中处理 WebSockets?

我正在开发一个 Chrome 扩展程序,我希望能够处理数据,因为它们是通过我不拥有的网站上的 WebSocket 连接来的。 不知何故,我想挂上 .onmessage 事件,以便我可以在该站点上使用这些数据做一些事情。但我不知道如何挂钩这个事件。该网站使用 webpack 进行了缩小,并且没有可用于重用某些全局 websocket 对象的全局变量

我尝试过但没有奏效的方法

  1. 找到带有 websocket 连接的全局窗口变量(没有这样的变量)
  2. 通过分析开发人员工具中的“网络”选项卡,重现与服务器的连接。 (服务器没有响应代码 101,但本机 websocket 连接会。我认为服务器可能会阻止相同类型的第二个 websocket 通道)

这是我尝试重现连接的代码

var websocket;
createWebSocketConnection();

function createWebSocketConnection() {


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

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

        websocket.onmessage = function (event) {
            var received_msg = JSON.parse(event.data);
            console.log(received_msg)
        };

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

所以我认为最好的解决方案是连接到网站上的现有代码。 我在想,也许我可以重写原生的 WebSocket .onmessage 函数,这样它就可以做它应该做的事情,而且还会调用我的自定义函数?有没有更好的办法?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。