【发布时间】:2017-12-24 18:45:30
【问题描述】:
我有一个 Socket.io 服务器在端口 3000 上运行,当在本地运行它(和网站/客户端)时,一切正常。但是当我将它推送到服务器时,客户端无法再连接。
生产服务器在 SSL 上运行,所以我假设我也需要 Socket.io 服务器在 SSL 上运行。我是这样设置的:
var app = express();
var fs = require('fs');
var is_production = process.env.NODE_ENV === 'production';
if(is_production){
var options = {
key: fs.readFileSync('/etc/letsencrypt/live/mywebsite.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/mywebsite.com/cert.pem'),
requestCert: true
};
var server = require('https').createServer(options, app);
}else{
var server = require('http').createServer(app);
}
var io = require('socket.io')(server);
server.listen(3000);
这仍然不起作用。我对 Socket.io 没有太多经验,因此将不胜感激。另请注意,在我在 Web 服务器上设置 SSL 证书之前一切正常。
客户端正在连接到ws://mywebsite.com:3000。我也尝试过使用http://、https:// 和wss://,但没有任何效果。
编辑:我尝试通过curl 发出请求,但收到以下错误:
curl: (35) gnutls_handshake() failed: The TLS connection was non-properly terminated.
【问题讨论】: