2016-11-22 2 views
0

Поэтому я использую http://socket.io с Node.js и развитие чата, чтобы узнать больше о Node.jsЕсть ли способ изменить код node.js через страницу PHP?

Я использую node.js общаться с MySQL, когда пользователь открывает страницу.

Но по причинам, связанным с пропускной способностью, я не могу использовать MySQL для всего, поэтому я храню несколько переменных. Например, я не хочу, чтобы пользователь дважды подписался, поэтому я бы сохранил идентификатор сокета для всех пользователей в JSON. Если идентификатор сокета уже существует для этого пользователя (в node.js), я бы отключил сокет.

Это прекрасно работает, но, допустим, я хотел отключить пользователя, как бы я мог сделать это с помощью PHP?

Один из вариантов, которые я рассмотрел, возможно, я обновляю таблицу в базе данных с требуемыми изменениями, а затем node.js проверяет эту таблицу каждые 60 секунд и выполняет то, что ей нужно, а затем обновляет таблицу после того, как изменения завершено.

Это лучший вариант или я должен попытаться выполнить это с помощью PHP? Очевидно, PHP будет более непосредственным - но это не слишком беспокоит меня.

ответ

1

Это довольно просто:

  1. Убедитесь, что Node.js код поддерживает HTTP-запросы и не только розетки.

  2. Укажите маршрут, необходимый для совершения любых действий. Например, вы можете обрабатывать /api/disconnect/:userId, который будет делать все, что вам нужно.

  3. В вашем PHP-коде вызывают соответствующий URL-адрес, используя file_get_contents или семейство вызовов cURL.

Конечно, вы хотите, чтобы убедиться, что у вас есть некоторая достойная безопасность, так что только ваш PHP скрипт может позвонить вам WebServices, в противном случае вы бы открыть дверь для всех видов атак. В краткосрочной перспективе это можно сделать, просто прослушивая 127.0.0.1 и используя этот адрес для связи.

Обратите внимание, что название вашего вопроса фактически не соответствует его тексту. Фактически вы не изменяете код node.js, вы просто изменяете данные, которыми он управляет.

+0

Спасибо! Это звучит как хороший метод. Извините за плохой титул. –

0

Не уверен, что я следую вашему описанию, однако одна вещь, которая выделяется, заключается в том, что вы рассматриваете возможность изменения кода с помощью кода. Не. Самомодифицирующийся код (независимо от того, разделен ли он по отдельным компонентам системы), является очень плохой идеей.

Если идентификатор сокета уже существует для этого пользователя, я бы отключил сокет.

Еженебы, где? Предположительно в node.js.

Хотя вы могли бы использовать базу данных для сохранения данных, я попытался бы ввести данные непосредственно в node.js из скрипта PHP. Это устраняет шаг опроса. Возникает вопрос о том, как вы повторно заполняете информацию в node.js после перезапуска, но это зависит от гораздо большей информации, чем вы предоставили.

+0

Извините, я обновил его, чтобы быть более понятным. Идентификатор сокета будет в узле.js хранится в переменной JSON для каждого пользователя. Репопуляция информации на самом деле не является проблемой, когда каждый пользователь подключается к ней, проверяет DB и добавляет соответствующую информацию к переменным JSON, которые я установил. –

+0

«Самомодифицирующийся код (независимо от того, разделен ли он по отдельным компонентам системы) - очень плохая идея». Я повторяю это мнение. –

Смежные вопросы