Почему веб-сокет моего скомпилированного приложения React не выполняет рукопожатие с кластером pm2? - PullRequest
0 голосов
/ 09 мая 2020

Мне потребовалось немного времени, чтобы понять, что эта ошибка не связана с сервером. У меня есть прокси-сервер nginx, который подталкивает восходящий поток к кластеру PM2, на котором запущено приложение nodejs express. Я наконец понял, что проксирование nginx делает то, что должно, и управляет липкими сессиями.

Я считаю, что проблема связана с реагирующим клиентом. Вот следующий сценарий ios:

  1. Без кластера - скомпилированное приложение для реагирования отлично работает с рукопожатием через веб-сокет
  2. Кластер PM2 с некомпилированным приложением для реагирования. Если я просто запустил версию для разработки, она отлично справится с рукопожатием веб-сокета. Я могу запустить несколько его экземпляров и увидеть, как разные экземпляры pm2 по очереди обслуживаются.
  3. Кластер PM2 со скомпилированным приложением реакции. Когда я компилирую приложение и обслуживаю его через stati c express или через сервер веб-сайта cloudfront / s3, в любом случае скомпилированное приложение реакции работает нормально, если PM2 не кластеризован, но когда он кластеризован, он имеет Ошибка во время рукопожатия websocket: неожиданный код ответа: 400

Надеюсь, кто-то может подкинуть мне несколько идей относительно того, на что я мог бы смотреть, прежде чем я перейду к базовому приложению реакции и начну играть с socket.io с совершенно новое приложение. Заранее благодарю за любую помощь.

...