node.js - Cloudflare SSL 握手因 socket.io 失败

标签 node.js ssl websocket socket.io cloudflare

这是我正在使用的代码:

"use strict"
var express = require('express');
var https = require('https');
var app = express();
var bodyParser = require('body-parser');
app.enable('trust proxy');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));
var fs = require('fs');
var options = {
    cert: fs.readFileSync('ssl_certs/cert.pem'),
    key: fs.readFileSync('ssl_certs/privkey.pem'),
    requestCert: true,
};
var server = https.createServer(options, app);
var io = require('socket.io')(server);
var port = 2083
server.listen(port, "0.0.0.0", function() {
    console.log('Listening on port *:' + port + '.');
});

io.on('connection', function(socket) {
    console.log('connected!')
});

console.log("Running node " + process.version);

如果我使用的是 Node.js 版本 6.11.2,此代码工作得很好,但是在 Node.js 版本 8.9.0 上,它在尝试建立连接时返回 525 错误。

如果重要的话,我的 SSL 设置在 Cloudflare 上设置为完全(严格)。

Node v8 中是否有我不知道的 SSL 更改?

如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

已知 SSL 问题会在 Node 8.5.0 之后发生。最好的解决方案是降级到 8.5.0 或更低版本,直到几天内从 Node 端解决所有问题。

来源:Issue

更多更新:Updates

关于node.js - Cloudflare SSL 握手因 socket.io 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47086452/

相关文章:

Node.js 一次锁定一个用户

node.js - 运行单元测试时如何抑制来自 node.js 应用程序的应用程序日志消息?

node.js - 如何使用nodeJS在Aws DynamoDB中进行更新查询

javascript - 未捕获的 InvalidStateError : Failed to execute 'send' on 'WebSocket' : Still in CONNECTING state

javascript - websockets 和 javascript - 传输名称/值对

node.js - Model.findOne 不返回文档但返回包装对象

asp.net - 使用 SSL 加密的 WCF 身份验证服务

jquery - 无法 POST 到 IHTTPHandler 类,Access-Control-Allow-Origin 不允许来源

java - 客户端和服务器单独托管时的 SSL 规则

python-3.x - 如何存储来自 Binance Websocket 的数据?