我正在使用NodeJS的einaros/ws模块,通过WebSocket实现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。
https
实例传递给new WebSocketServer()
而不仅仅是{port:80}
。更多信息在这里。希望这可以帮到你。 - ᴍᴇʜᴏᴠ