使用 websockets(ws 包)(https)连接两个 node.js 服务器

Connect two node.js servers with websockets (ws package) (https)

我正在尝试使用 ws 包通过 websocket 连接两个 node.js 服务器。这是一些代码:

客户端服务器:

var socket = new WebSocket("wss://localhost:9000");

socket.addEventListener('open', function (event) {
    console.log("websocket connected");
})

socket.addEventListener('message', function (event) {
    console.log("message from backend server: ", event.data);
})

后端服务器:

var https = require('https');
    
var httpsServer = https.createServer(credentials, app);
    
const WebSocket = require('ws');

const wss = new WebSocket.Server({ server:httpsServer });
    
wss.on('connection', function (ws) {
  console.log("websocket connnected");
})
    
httpsServer.listen(9000, function () {
  console.log(`server started on port 9000 via https`);
});

当我 运行 此代码时,在命令提示符下收到一条错误消息,提示“错误:证书已过期”。我使用的是自签名 ssl 证书,它非常适合 node.js 服务器和浏览器之间的 websocket,所以我不相信证书有任何问题。我已经看到了如何使用 socket.io 和 socket.io-client 使它工作的示例,但是我如何才能使用 ws 包使其工作?

这是 ssl 证书的问题。出于某种原因,使用自签名 ssl 证书从浏览器转到 node.js 服务器是可以的,但是使用自签名 ssl 证书从 node.js 服务器转到 node.js 则不行。

我创建了一个全新的 ssl 证书,然后在客户端服务器中,而不是:

var socket = new WebSocket("wss://localhost:9000");

..我现在有:

var socket = new WebSocket("wss://localhost:9000", {
  rejectUnauthorized: false
});

..有效。