staffID
@staffID

Как правильно настроить nodeJs для php приложения?

Сайт написан на php нужно прикрутить node.js.
У меня есть несколько вариантов как это можно сделать.
Создать порт на домен, типа "domain.com:1337" и подключать его через curl в php
Либо же через iframe, но что-то подсказывает, что так никто не делает.
Как сделать связку правильно и обезопасить себя от взлома сервера?
  • Вопрос задан
  • 402 просмотра
Решения вопроса 1
@sergeystepanov1988
Есть такая штука, под названием DNode: https://github.com/bergie/dnode-php
Еще как вариант теоретически можно использовать RabbitMQ. Он как раз сделан для того, чтобы соединять две системы, которые друг с другом не совместимы.
А вообще самый простой вариант тот, который был предложен в теле вопроса, то есть повесить ноду на локалхосте на каком-нибудь порту и стучаться к нему курлом. Если порт закрыт для http-запросов, то проблем с безопасностью быть не должно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
nazarpc
@nazarpc
Open Source enthusiast
Судя по тому что удалось выяснить в комментариях вам не нужны ни PHP ни Node.js, речь на самом деле о мгновенной доставке сообщений в зависимости от того что происходит на сервере.

Лучше всего (учитывая распространенность поддержки у популярных браузерах) вам подойдет протокол WebSockets.

WebSockets можно реализовать на Node.js, к примеру, я как-то использовал NPM пакет nodejs-websocket.
Так же WebSockets сервер можно реализовать на PHP, это уже как удобно (может пригодиться для повторного использования кода и вообще реализации всего в рамках одного стека). Для PHP одна из популярных реализаций это Ratchet.

Если у вас что-то происходит на сайте (который уже есть и на PHP) и вы хотите отправить сообщение на клиент по WebSockets, я бы порекомендовал подключаться к тому же WebSockets серверу (не важно на чём он написан) через библиотеку Pawl (часть проекта Ratchet), которая является WebSockets клиентом и написана на PHP (но нужно как-то отличать внутренние запросы от севера и внешние от клиентов, для этого можно ввести в серверные сообщения какой-то секретный токен).

Теперь вторая часть, по поводу порта. На самом деле если вы контролируете сервер, то можете повесить всё на один внешний порт, а внутри Nginx будет сам разбираться куда направлять запрос - если нужно, то отправит на интерпретатор PHP, а если это WebSockets соединение, то сделает переключение протокола до WebSockets. Как у меня во фреймворке это реализовано можете посмотреть на примере конфига Nginx здесь: https://github.com/nazar-pc/CleverStyle-CMS/wiki/N... Смотрите где /WebSockets location.

И очень рекомендую разобраться всё-таки чем отличается Node.js от PHP от WebSockets от AJAX чтобы задавать более конкретные вопросы в будущем и реализация иначе у вас тоже не получится.
Ответ написан
@fetis26
Ну, за фронтенд!
Есть вот такая штуковина
php.net/manual/en/intro.v8js.php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы