Экспресс-прокси для socket.io - PullRequest
       31

Экспресс-прокси для socket.io

0 голосов
/ 24 сентября 2019

Работая с архитектурой микросервисов, я бы хотел перенаправлять весь мой трафик socket.io через мой шлюз на микросервис socket.io.Мой шлюз работает экспресс.Моя текущая реализация выглядит так:

import proxy from 'http-proxy-middleware';
import express from 'express';
import cors from 'cors';

const app = express();

app.use(cors())

// proxy middleware options
const options = {
    target: 'http://127.0.0.1:1234/test',
    changeOrigin: true,
    secure: false,
    ws: true
};

const exampleProxy = proxy(options);

app.use('/socket.io', exampleProxy);
app.use('/upgrade', exampleProxy);

app.listen(port);

Странно, что запросы GET проходят к моему сервису, поэтому я получаю соединение с сокетом, но при попытке отправить событие из клиента socket.io(Запрос POST), время ожидания запроса истекло.

Мой экспресс-сервер регистрирует через Морган следующее:

 [HPM] Error occurred while trying to proxy request /socket.io/?EIO=3&transport=polling&t=MrZfNeU&sid=cR-5g0531PU9XxiGAAAN from localhost:2999 to http://127.0.0.1:1234/test (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors)

Мой интерфейс отображает ошибку cors:

Access to XMLHttpRequest at 'http://localhost:8888/socket.io/?EIO=3&transport=polling&t=MrZfNeU&sid=cR-5g0531PU9XxiGAAAN' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

При подключении напрямую ксервер socket.io работает отлично.В чем может быть проблема?Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Проблема была решена путем размещения bodyParser под прокси, как указано в следующем комментарии .

0 голосов
/ 24 сентября 2019

Видимо, вы получаете ошибку CORS.(CORS - Cross-Origin-Resource-Sharing)

Можете ли вы активировать промежуточное ПО cors?в экспресс сторону.

Источник: https://expressjs.com/en/resources/middleware/cors.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...