【问题标题】:Socket.io client not connectingSocket.io 客户端未连接
【发布时间】: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.

【问题讨论】:

    标签: node.js ssl socket.io


    【解决方案1】:

    我无法弄清楚问题出在哪里,所以这就是我所做的。

    我在同一台服务器上运行 Nginx 来为我的网站提供服务,所以我最终做的是将 Nginx 配置为将所有 SSL 连接代理到端口 3000 并将它们转发到在端口 8080 上运行的 node.js 服务器。这样 Nginx 会处理 SSL,因此 node.js 服务器不需要任何额外的配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多