在 WebSockets 停止工作之后,我最近将服务器切换到了 HTTPS。
在客户端,协议从 ws 更改为 wss。在服务器上(在 NODE JS 上运行),证书文件也已连接并进行了必要的设置。结果,现在在客户端上抛出一个错误:
WebSocket connection to 'wss://XXX.XX.XXX.XXX:4433/' failed: WebSocket opening handshake was canceled
Node JS 中的服务器端代码:
var https = require('https');
var WebSocketServer = require('ws'), fs = require('fs');
var port = 4433;
var app = null;
var processRequest = function( req, res ) {
res.writeHead(200);
res.end("All glory to WebSockets!\n");
};
app = https.createServer({
key: fs.readFileSync('/etc/nginx/ssl/server.key'),
cert: fs.readFileSync('/etc/nginx/ssl/bundle.crt'),
requestCert: true,
rejectUnauthorized: false,
}, processRequest ).listen(port);
var webSocketServer = new WebSocketServer.Server( { server: app } );
如何让 Websockets 与 HTTPS 成为朋友?
事实证明,这个问题有多达 2 个细微差别: