Параметры связи между сервером nodejs и веб-сайтом PHP

#php #node.js #communication

#php #node.js #Информационные материалы

Вопрос:

До сих пор я использовал websockets для связи между nodejs и php. Я создал сервер websocket в nodejs, который прослушивает какой-то пользовательский порт.

Затем в php-скрипте я использовал stream_socket_client() и связанные с ним функции для подключения в качестве клиента. Затем всякий раз, когда мне что-то требовалось от сервера, я отправлял сообщение и ожидал ответа с данными (в формате json). Затем он создаст html-код для отображения этих данных пользователю.

Это работает, однако это не кажется естественным, и мне было интересно, есть ли лучшие варианты. Веб-сайты предназначены для Интернета, как следует из названия, но я использую их для локального сервера и скрипта

Я должен упомянуть, что сервер должен иметь возможность общаться с несколькими клиентами одновременно, потому что веб-сайт может иметь несколько посетителей. Модули nodejs websocket предлагают эту возможность. Но ему не нужно поддерживать связь, потому что php-скрипт только делает свое дело и останавливается.

Комментарии:

1. Зачем вам нужен PHP? Node.js может все, что делает PHP, намного быстрее и, вероятно, лучше.

2. Я собирался сказать то же самое… почему у вас есть два языка на стороне сервера на ходу, по-видимому, как часть одного и того же приложения? Похоже на какой-то архитектурный кошмар.

3. полностью перейдя к узлу its в списке «задачи». К сожалению, клиент колеблется, поэтому мне нужно делать по одному шагу за раз. Сначала я перемещаю файловый ввод-вывод и базу данных в узел, а затем, в конечном счете, и html

Ответ №1:

Давайте проигнорируем, почему вы используете оба Node.js и PHP (что может быть источником вашего плохого самочувствия), и сосредоточимся на вопросе RPC.

Выбирая подход RPC, вы должны учитывать и сравнивать различные аспекты каждого подхода, см. Мой контрольный список.

Контрольный список

Это помогает мне выбирать подходы.

Время выполнения:

  • Скорость
  • Память
  • Стабильность

Время разработки:

  • Время
  • Трудность
  • Возможность тестирования и/или отладки

Вывод

Учитывая вышесказанное, насколько я понял, ваш текущий подход к веб-сокетам выполнил все контрольные вопросы, такие как:

Время выполнения:

  • Скорость: localhost подключение занимает 0 мили-сек.
  • Память: около 2 MB (освобождается после каждого запроса).
  • Стабильность: Веб-сокеты используются во всем мире, и если что-то стабильно, то это локальный веб-сокет.

Время разработки:

  • Время: Оно уже разработано.
  • Трудность: Это хорошо известно.
  • Тестируемость и/или отлаживаемость: Тестируемость с помощью обоих PHPUnit и/или чего бы вы ни использовали для тестирования Node.js кода.

Пожалуйста, оставайтесь с веб-сокетами, потому что даже если вы разработаете какой-то пользовательский протокол, он нарушит более одного пункта в показанном контрольном списке.