我有一个使用ws websocket库的Node服务器。我需要同时提供ws
和wss
个连接,因为并非所有客户都可以与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
连接(握手失败)。是否可以同时提供这两种类型的连接?
感谢您的建议!
答案 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);