Подтвердить что ты не робот

Как настроить модуль einaros/ws для NodeJS для подключения wss (secure ws)?

Я использую модуль 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.

4b9b3361

Ответ 1

Через 3 месяца я снова рассмотрел проблему и решил проблему.

Код верный.

Моя ошибка заключалась в том, что я пытался подключить клиента, используя ip сервера (wss://xx.xx.xx.xx: 8081), вместо того, чтобы использовать субдомен, для которого был выдан сертификат и ключ (wss://secure.subdoma.in:. 8081)