gpt4 book ai didi

javascript - 无法从 JavaScript 客户端通过 https 连接到 websocket 服务器

转载 作者:行者123 更新时间:2023-12-03 03:59:41 25 4
gpt4 key购买 nike

我使用以下代码为我的 webrtc 应用程序创建了 websocket 服务器

 const https = require('https');
const fs = require('fs');

const options = {
key: fs.readFileSync('C:/.../key_store.key'),
cert: fs.readFileSync('C:/.../key_store.crt')
};

var server = https.createServer(options, (req, res) => { res.writeHead(200); res.end('hello world\n');}).listen(9090);



//require our websocket library
var WebSocketServer = require('ws').Server;

//creating a websocket server at port 9090
var wss = new WebSocketServer({server});

我的 websocket 客户端代码是:

conn = new WebSocket('ws://localhost:9090');

当我尝试使用上述代码连接到 websocket 服务器时,我在 JavaScript 控制台中遇到以下异常:

VM908:35 WebSocket connection to 'ws://localhost:9090/' failed: Connection closed before receiving a handshake response

我尝试在 Chrome 中导入证书,但没有成功。

最佳答案

WebRTC 需要 https,并且 https 页面仅允许安全 Wecsockets (wss) 连接。

所以需要在客户端创建WebSocket,如下

conn = new WebSocket("wss://your_server_ip:wss_port/");
In your case:
conn = new WebSocket("wss://139.126.123.18:9090/");

我认为您在 WebSocket 服务器中使用自签名 SSL 证书(key_store.crt/.key)。
在这种情况下,浏览器将为这些连接引发 ERR_INSECURE_RESPONSE 异常。
因此,我们通过在浏览器中访问该 url 手动添加异常,如下所示。

在新标签页中打开https://139.126.123.18:9090/
然后点击“高级”->“继续”(对于 Chrome)。

或者您可以将自签名 CA 导出到浏览器。

现在您的安全 WebSocket 应该已连接。

关于javascript - 无法从 JavaScript 客户端通过 https 连接到 websocket 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44779727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com