如何设置 NodeJS 的 einaros/ws 模块来接受 wss(安全 ws)连接?

问题描述 投票:0回答:1

我正在使用 NodeJS 的 eniaros/ws 模块,使用 Web 套接字在 iOS 应用程序和 NodeJS 服务器之间进行实时通信。

应用程序运行良好,但现在我必须使用 wss 来保护服务器和 iOS 应用程序之间的通信。我有我的 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 } );

代码几乎是 GitHub 上的 ws/examples/ssl.js 文件中给出的示例,但由于某种原因,NodeJS/ws 服务器不接受任何 wss 套接字连接。

我使用正确的路径 wss://REMOTE_SERVER_IP:8081/ 并且我正在使用 http://www.websocket.org/echo.html .

进行测试

我进行了广泛的搜索,但似乎没有关于如何使用 eniaros/ws 设置安全 wss 的最新教程。

node.js web-services ssl websocket
1个回答
12
投票

3个月后我重新审视这个问题并解决了问题。

代码正确。

我的错误是我尝试使用服务器的 IP (wss://xx.xx.xx.xx:8081) 连接客户端,而不是使用为其颁发证书和密钥的子域 (wss:/ /secure.subdoma.in:8081).

© www.soinside.com 2019 - 2024. All rights reserved.