节点:提供与同一服务器的安全(wss://)和不安全(ws://)连接

时间:2015-05-29 10:35:05

标签: node.js web-services websocket

我有一个使用ws websocket库的Node服务器。我需要同时提供wswss个连接,因为并非所有客户都可以与wss进行通信。单个websocket服务器是否可以同时提供这两种连接?如果是这样,怎么样?

目前我像这样初始化我的服务器:

var https = require('https');
var WebSocketServer   = ws.Server;
var fs = require('fs');
var app = https.createServer({
        key: fs.readFileSync( ssl_key ),
        cert: fs.readFileSync( ssl_cert )
    }, processRequest ).listen( port );

var wss = new WebSocketServer( { server: app } );

然而,这可以防止不安全的ws连接(握手失败)。是否可以同时提供这两种类型的连接?

感谢您的建议!

1 个答案:

答案 0 :(得分:1)

好的,结果很简单。我们的想法是使用代理,它可以处理这两种类型的连接。原始服务器不需要修改,这很好。我最终使用了http-proxy包(当然,更多的方法是available)。相关代码如下所示:

require('http-proxy').createProxyServer({
    target: {
        host: 'localhost', // the insecure (ws://) websocket server
        port: 9000, 
        ws: true
    },
    secure: true,
    ssl: {
        key: fs.readFileSync(__dirname + '/server.key'),
        cert: fs.readFileSync(__dirname + '/server.crt')
    }
}).listen(8000);