我正在使用eniaros / ws模块为NodeJS使用Web套接字在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的最新教程。
3个月后,我重新考虑了问题并解决了问题。
代码正确。
我的错误是我尝试使用服务器的IP(wss://xx.xx.xx.xx:8081)连接客户端,而不是使用为其颁发证书和密钥的子域(wss:// secure.subdoma.in:8081)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句