Я использую модуль eniaros/ws для NodeJS для связи в реальном времени между приложением iOS и сервером NodeJS с использованием веб-сокетов.
Приложение работает нормально, но теперь мне нужно обеспечить связь между сервером и iOS-приложением с помощью wss. У меня есть мой Rapid SSL-сертификат и ключ, и я использую следующий код на сервере:
var fs = require('fs');
var cfg = {
ssl: true,
port: 8081,
ssl_key: 'key.key',
ssl_cert: 'cert.crt'
};
var httpServ = ( cfg.ssl ) ? require('https') : require('http');
var app = null;
// dummy request processing
var processRequest = function( req, res ) {
res.writeHead(200);
res.end("All glory to WebSockets!\n");
};
if ( cfg.ssl ) {
app = httpServ.createServer({
// providing server with SSL key/cert
key: fs.readFileSync( cfg.ssl_key ),
cert: fs.readFileSync( cfg.ssl_cert )
}, processRequest ).listen( cfg.port );
} else {
app = httpServ.createServer( processRequest ).listen( cfg.port );
}
// passing or reference to web server so WS would knew port and SSL capabilities
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer( { server: app } );
Код в значительной степени является примером, приведенным в файле ws/examples/ssl.js на GitHub, но по какой-то причине сервер NodeJS/ws не принимает любые соединения wss-сокета.
Я использую правильный путь wss://REMOTE_SERVER_IP: 8081/, и я тестирую http://www.websocket.org/echo.html.
Я искал широко и широко, но, похоже, нет актуального руководства по настройке защищенного wss с помощью eniaros/ws.