Socket.IO,SSL问题与cloudflare

我有一个socket.io应用程序,基本上从前端接收信号,以杀死和启动一个新的ffmpeg进程(基于.spawn())。

一切都像预期的那样工作,但是我经常从cloudflare中得到一个525错误。 错误消息是:Cloudflare无法build立与原始服务器的SSL连接。

它的工作原理是10次中的9次。我注意到,只要kill + spawn完成,就会出现更多的这些错误。 难道是事件阻塞事件循环,并因为这阻止所有传入的请求和cloudflarelogging这些握手失败错误?

联系cloudflare支持让我回到这个信息(这是他们对我的服务器的要求):

Time id host message upstream 2017-08-16T09:14:24.000Z 38f34880faf04433 xxxxxx.com:2096 peer closed connection in SSL handshake while SSL handshaking to upstream https://xxx.xxx.xxx.xxx:2096/socket.io/?EIO=3&transport=polling&t=LtgKens 

我现在正在debugging一段时间,但似乎无法自己find解决scheme。

这是我如何初始化我的socketIO服务器。

 /** * Start the socket server */ var startSocketIO = function() { var ssl_options = { key: fs.readFileSync(sslConfig.keyFile, 'utf8'), cert: fs.readFileSync(sslConfig.certificateFile, 'utf8') }; self.app = require('https').createServer(ssl_options, express); self.io = require('socket.io')(self.app); self.io.set('transports', ['websocket', 'polling']); self.app.listen(2096, function() { console.log('Socket.IO Started on port 2096'); }); }; 

这是服务器端的监听器代码

 this.io.on('connection', function (socket) { console.log('new connection'); /** * Connection to the room */ socket.on('changeVideo', function (data) { //Send to start.js and start.js will kill the ffmpeg process and start a new one socket.emit('changeVideo'); }); }); 

另一件我在debugging时观察的(我只有这几次):

显示在服务器和连接的客户端上的文本新连接发出changevideo事件,但在服务器端没有任何反应,而客户端只是保持重新连接。

这是nodejs代码的简化版本。 如果你有更多的问题,请让我知道。

谢谢!

Solutions Collecting From Web of "Socket.IO,SSL问题与cloudflare"