Chrome扩展中的Socket通信问题

Posted

技术标签:

【中文标题】Chrome扩展中的Socket通信问题【英文标题】:Problem with Socket communication in Chrome extension 【发布时间】:2019-10-01 06:16:56 【问题描述】:

我正在尝试在 chrome 扩展中建立套接字通信。我有我的扩展程序,它将与 chrome 提供的“简单 Websocket 客户端”通信。但我无法使用“WebSocket”类成功建立连接。

我尝试使用 Socket 类,但后来发现它不支持扩展。因此我尝试了 websocket,但我收到错误消息“websocket 握手期间出错:ERR_INVALID_HTTP_RESPONSE。”

var wsoc;
wsoc = new WebSocket("ws://localhost:8001");
wsoc.onopen = function()

    wsoc.send("Message from chrome extension");
;

我希望通过以下 Chrome 提供的客户端成功建立连接:简单 WebSocket 客户端扩展 (https://chrome.google.com/webstore/detail/simple-websocket-client/pfdhoblngboilpfeibdedpjgfnlcodoo?hl=en)

【问题讨论】:

【参考方案1】:

您需要设置一个 WebSocket 服务器。可以使用 ws,一个 Nodejs WebSocket 库来做到这一点。您正在尝试做的是将客户端连接到客户端,这是行不通的。您可以作为客户端之间的中间人启动 WebSocket 服务器。在浏览器中创建服务器是不可能的。 source

【讨论】:

嗨,所以我尝试使用 netcat 和命令“nc.exe -l -p 8001”创建服务器,但我仍然面临同样的问题。将 ERR_INVALID_HTTP_RESPONSE 作为错误。 可能你需要处理握手的东西。更多信息在这里ssklogs.blogspot.com/2012/10/…恕我直言,你最好使用一些框架/库来处理这个问题,正如我的回答中提到的那样。 给定链接上的 bash 脚本似乎崩溃了。知道为什么会发生这种情况吗? ***.com/a/57879576/3360802 TL;如前所述,DR 使用第 3 方 WebSocket 服务器。【参考方案2】:

客户端:使用 AJAX https://www.tutorialspoint.com/ajax/ajax_in_action.htm

服务器参考:https://docs.microsoft.com/en-us/windows/win32/http/http-server-sample-application

【讨论】:

以上是关于Chrome扩展中的Socket通信问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 打包应用程序和 Chrome 扩展程序之间进行通信?

Chrome 扩展后台脚本如何与网页服务工作者通信?

Chrome扩展中脚本的运行机制和通信方式

Chrome扩展中脚本的运行机制和通信方式

Chrome扩展中脚本的运行机制和通信方式

chrome 扩展的浏览器动作、后台脚本和内容脚本之间通信的上下文和方法?