我有一个使用ws websocket库的节点服务器。我需要同时服务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
连接(握手失败)。是否可以同时提供两种类型的连接?
谢谢你的建议!
好的,事实证明这很简单。这个想法是使用代理,它可以处理两种类型的连接。原始服务器不需要修改,这很好。我最终使用了http-proxy包(自然地,可以使用更多方法)。相关代码如下:
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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句