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

一切都像预期的那样工作,但我经常从cloudflare得到525错误 . 错误消息是:Cloudflare无法与源服务器 Build SSL连接 .

它的工作方式类似于10次中的9次 . 我注意到,每当完成一个kill spawn时,会弹出更多这些错误 . 是否会出现阻止事件循环的情况,因为这会阻止所有传入请求和cloudflare将这些作为握手失败错误记录?

联系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

我现在正在调试一段时间,但似乎自己找不到解决方案 .

这是我初始化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');
            });
   });

调试时我观察到的另一件事(我只有几次):

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

这是nodejs代码的简化版本 . 如果您有更多问题,请告诉我 .

谢谢!