我对HTTPS和WebSocket连接有问题(我使用Node.JS作为服务器)。我用OpenSSL生成了SSL证书,并使用以下代码将它们导入服务器:
const https = require('https');
var app = express();
...
const WebSocket = require('ws');
...
var serverHttps = https.createServer({
key: fs.readFileSync(path.join(pathCertificati, 'key.pem')),
cert: fs.readFileSync(path.join(pathCertificati, 'cert.pem'))
}, app).listen(3000, () => {
console.log('In ascolto sulla porta 3000 HTTPS.')
})
const wss = new WebSocket.Server({
server: serverHttps,
adress: '192.168.12.40',
port: 9000
});有了这段代码,我应该有一个WebSocket来处理HTTPS连接,对吗?
客户端,我有以下代码:
socket = new WebSocket("wss://192.168.12.40:9000");
socket.onopen = function ()...
socket.onclose = function ()...
socket.onerror = function (error) {
console.log("Errore nella connessione!");
console.log(error);
}当我使用address:https://192.168.12.40:3000和上面的代码加载页面时,会出现错误消息:
指向'wss://192.168.12.40:9000/‘的WebSocketScript.js:26 WebSocket连接失败:连接建立中的错误:WebSocketScript.js:26
您对在HTTPS页面上建立WebSocket连接有什么想法吗?非常感谢。
发布于 2021-01-28 16:37:26
我已经找到了解决这个问题的办法。解决办法是:
服务器端代码:
var serverHttps = https.createServer({
key: fs.readFileSync(path.join(pathCertificati, 'key.pem')),
cert: fs.readFileSync(path.join(pathCertificati, 'cert.pem'))
}, app).listen(3000, () => {
// Messaggio di attivazione del server in ascolto sulla porta 3000
console.log('Listening ' + 3000 + ' HTTPS.');
})
serverHttps.on('upgrade', function upgrade(request, socket, head) {
const pathname = url.parse(request.url).pathname;
if (pathname === "/") {
wss.handleUpgrade(request, socket, head, function done(ws) {
wss.emit('connection', ws, request);
});
}
});
// Create WebSocket
const wss = new WebSocket.Server({ noServer: true });
wss.on('error', function () {...}
wss.on('connection', function (ws) {...}客户端:
socket = new WebSocket("wss://192.168.12.40:3000);这是服务器端使用的相同地址,它触发事件“serverHttps.on(‘升级’)”
谢谢原木..。
https://stackoverflow.com/questions/65920794
复制相似问题