Я получил его, выполнив следующее:
https://github.com/einaros/ws/blob/master/test/WebSocketServer.test.js#L514
Сначала создайте свои самозаверяющие сертификаты:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 100 -nodes
Затем создайте ваш httpsServer из экспресс-приложения, используя встроенный https-сервер узла:
var privateKey = fs.readFileSync('sslcert/key.pem', 'utf8');
var certificate = fs.readFileSync('sslcert/cert.pem', 'utf8');
var credentials = {key: privateKey, cert: certificate};
var express = require('express');
var app = express();
//... bunch of other express stuff here ...
//pass in your express app and credentials to create an https server
var httpsServer = https.createServer(credentials, app);
httpsServer.listen(8443);
Затем настройте сервер веб-сокетов (по иронии судьбы он будет использовать тот же порт, что и http-сервер, я этого не знал, но, думаю, протоколы могут совместно использовать порты?
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({
server: httpsServer
});
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
ws.send('something');
});
Теперь перейдите на сервер https://0.0.0.0:8443
и примите самоподписанный сертификат в Chrome. Тогда веб-сокеты теперь должны работать в браузере.
Откройте консоль Chrome Devtools и введите:
var ws = new WebSocket('wss://0.0.0.0:8443');
ws.send('foo');
.... или любой другой хост: порт, который вы использовали для httpsServer, ключом здесь является то, что вы используете wss://
протокол
На вашем узле экспресс-веб-сервера вы должны увидеть сообщение, зарегистрированное на консоли. Запустите сервер с node ./server.js
http://www.chovy.com/web-development/self-signed-certs-with-secure-websockets-in-node-js/