Использование Socket.IO с HTTPS и AWS Elasti c Beanstalk - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть веб-сайт, размещенный на AWS Elasti c Beanstalk с использованием прокси nginx, и я пытаюсь использовать 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, когда Страница пытается установить sh соединение.

Вот как сервер узла создается и генерирует события:

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");
          });

Это конфигурация для мой балансировщик нагрузки: classic load balancer config

Я пробовал предложения из других подобных вопросов, таких как изменение протокола на SSL и протокола экземпляра на TCP, но это мешает сайту быть доступным. В моей конфигурации proxy_set_header Connection "upgrade" и proxy_set_header Upgrade $http_upgrade установлены для nginx.

1 Ответ

0 голосов
/ 07 апреля 2020

Я нашел решение моей конкретной c ситуации. Моя предыдущая среда Elasti c Beanstalk была настроена с балансировщиком нагрузки Classi c; Я перенес свой веб-сайт в новую среду Elasti c Beanstalk с балансировщиком нагрузки приложения и следующей конфигурацией:

alb config

...