2015-05-29 88 views
1

我有一个使用ws websocket库的节点服务器。我需要同时提供wswss连接,因为并非我所有的客户都可以与wss进行通信。单个websocket服务器可以为这两种类型的连接提供服务吗?如果是这样,怎么样?节点:服务于同一服务器的安全(wss://)和不安全(ws://)连接

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

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

好吧,所以它变得非常简单。这个想法是使用代理,它可以处理这两种类型的连接。原始服务器不需要修改,这很好。我结束了使用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);