【问题标题】:Using Socket.IO with HTTPS and AWS Elastic Beanstalk将 Socket.IO 与 HTTPS 和 AWS Elastic Beanstalk 一起使用
【发布时间】:2020-07-17 21:48:54
【问题描述】:

我有一个使用 nginx 代理由 AWS Elastic Beanstalk 托管的网站,并且一直在尝试使用 Socket.IO,但是当页面尝试建立连接时,我收到了 Firefox can’t establish a connection to the server at wss://my-domain.com/socket.io/?EIO=3&transport=websocket&sid=WKtOGhLspneTExRLAAAB 的错误消息和 400 响应代码。

这是创建节点服务器并发出事件的方式:

const express = require("express");
const app = express();

const server = app.listen(8081, () => {
    console.log("Server started on port " + port);
});
const io = require("socket.io")(server);

app.route("/api/listener").post((req, res) => {
    io.emit("response", req.body.Status);
    res.sendStatus(200);
});

这是客户端尝试连接的方式:

const io = require("socket.io-client");

let socket = io("https://my-domain.com");
socket.on("response", 
          function() {
              console.log("Response received");
          });

这是我的负载均衡器的配置:

我已经尝试过其他类似问题的建议,例如将协议更改为 SSL 并将实例协议更改为 TCP,但这会阻止站点访问。我的 nginx 配置中确实设置了 proxy_set_header Connection "upgrade"proxy_set_header Upgrade $http_upgrade

【问题讨论】:

    标签: amazon-web-services nginx socket.io amazon-elastic-beanstalk


    【解决方案1】:

    我找到了针对我的具体情况的解决方案。我之前的 Elastic Beanstalk 环境是使用 Classic 负载均衡器设置的;我已将我的网站迁移到具有应用程序负载均衡器和以下配置的新 Elastic Beanstalk 环境:

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 2016-10-05
      • 2022-12-13
      • 2019-02-05
      • 2018-08-14
      • 2016-05-12
      • 2020-08-18
      • 2018-08-28
      • 2016-04-22
      相关资源
      最近更新 更多