使用 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
});
..有效。
我正在尝试使用 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
});
..有效。