NodeJS и ReactJS сокетная связь - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть прекрасное приложение с полным стеком, с NodeJS на стороне сервера и ReactJS на стороне клиента.Приложение использует пакет Socket.IO , как серверный, так и клиентский API.

На моем компьютере все отлично работает на localhost 4000 для узла и localhost 3000 для реакции.Идеальное общение на каждом сокете событий.Но в будущем мои настройки будут немного другими.

Я хочу разместить код на стороне сервера на одном сервере, называемый здесь SERVER_A, и код на стороне клиента на другом сервере, называемый здесь SERVER_B, действуякак шлюз для пользователей.Я ожидал бы, что клиент откроет http://SERVER_B:80/myapp на своем персональном компьютере, откроется мое приложение реакции, и все соединения сокетов будут выполняться внутри системы между SERVER_B и SERVER_A, в результате чего клиент получит данные, отправленные приложением узла.Но на самом деле пользователь на своем персональном компьютере должен подключиться к 80-му порту SERVER_B и 4000-му SERVER_A, чтобы все приложение работало должным образом.

Это облом, потому что этот тип связи долженсделано под капотом.Можно ли как-нибудь ограничить прослушивание и генерацию событий сокета между Node и React и оставить клиенту только отображаемые данные?

Надеюсь, это было ясно и извините за нубизм ...:)

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Я думаю, вы хотите сделать SERVER_A чем-то вроде невидимого для пользователя. Вместо этого он служит SERVER_B для данных. Если это так, я думаю, что вам нужно настроить виртуальный хост в SERVER_B (использовать что-то вроде прокси) для связи между SERVER_B и SERVER_A. Поэтому, когда ваш клиент делает запрос к SERVER_B (для соединения, связанного с приложением узла), SERVER_B будет устанавливать сокетное соединение на SERVER_A, и связь продолжается.

Если я должен сказать, что я бы не рекомендовал делать это, потому что такого рода настройки ухудшают производительность. Причина этого в том, что SERVER_B должен сначала прочитать клиентские потоки, а затем записать потоки в SERVER_A. Когда SERVER_A отправляет некоторые потоки, которые он должен снова записать обратно клиенту.

0 голосов
/ 10 сентября 2018

Порт по умолчанию, на который будет отвечать VirtualHost, настроен «под капотом» (невидим для первого взгляда не злонамеренного потребителя). Таким образом, ваш клиент увидит https://SERVER_B/ и https://SERVER_A, но порт DEFAULT будет отличаться.

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