heroku连接closures代码= H13

我使用SSL有效证书在heroku上部署了一个简单的nodejs服务器

var https = require('https'); var express = require('express'); var bodyParser = require('body-parser'); var fs = require('fs'); var app = express(); var cors = require('cors'); var credentials = { key: fs.readFileSync('./cert/key.key'), cert: fs.readFileSync('./cert/cert.crt'), ca: fs.readFileSync('./cert/bundle.crt'), requestCert: true, rejectUnauthorized: false }; var server = https.createServer(credentials, app); var io = require('socket.io')(server); app.use(cors()); app.use(bodyParser.json({limit: '12mb'})); app.use(bodyParser.urlencoded({limit: '12mb', extended: true })); io.on('connection', function(socket){ console.log(socket); socket.on('authenticate', function(data){ console.log(data); }); }); var port = process.env.PORT || 8080; server.listen(port, function () { console.log("server listen on", this.address()); }); server.on('clientError', function(err) { console.log('ERROR', err); }); 

问题是,当我启动应用程序,我收到这个错误

 ERROR { Error: socket hang up at TLSSocket.<anonymous> (_tls_wrap.js:820:25) at emitOne (events.js:101:20) at TLSSocket.emit (events.js:188:7) at Socket._handle.close (net.js:492:12) at Socket.g (events.js:286:16) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at TCP._handle.close [as _onclose] (net.js:492:12) code: 'ECONNRESET' } 

当我尝试通过铬连接到我的服务器我收到服务器端的这个错误

 2017-01-05T15:03:43.465542+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/socket.io/?EIO=3&transport=polling&t=LblA3JZ" host=www.myapp.com request_id=51982ce9-99e3-4677-acb4-a0f14eb88999 fwd="95.251.90.218" dyno=web.1 connect=1ms service=2ms status=503 bytes=0 2017-01-05T15:03:43.460178+00:00 app[web.1]: ERROR Error: 140414443095936:error:1407609C:SSL routines:SSL23_GET_CLIENT_HELLO:http request:../deps/openssl/openssl/ssl/s23_srvr.c:394: 

并在客户端这个错误

 XMLHttpRequest cannot load https://www.myapp.com/socket.io/?EIO=3&transport=polling&t=LblDK25. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.0.8:8100' is therefore not allowed access. The response had HTTP status code 503. 

在第一时间我以为是socket.io,但问题仍然存在与正常的REST操作。 现在我认为这是SSL的问题。 我与godaddy提供商创build一个有效的证书,我把它上传到heroku成功。 事实上,如果我尝试通过https连接连接到我的应用程序证书是有效的。 也许问题是当我尝试上传这个证书到我的nodejs app.someone可以帮助我吗? 提前致谢

您应该使用HTTP服务器而不是HTTPS。 Heroku的负载平衡器发生SSL终止; 他们发送您的应用程序普通(非SSL)stream量,所以您的应用程序应该创build一个非HTTPS服务器。

Heroku上的HTTPS + SSL – Node + Express