Как реализовать настоящий быстрый веб-чат с PHP? - PullRequest
6 голосов
/ 18 ноября 2011

Как реализовать по-настоящему быстрый веб-чат с PHP?

Кто-нибудь задумывался, почему чат в Facebook действительно такой быстрый?даже в IE без WebSocket.

Разве не единственный способ - установитьInterval в JS для проверки новых сообщений?Но я чувствую, что это (окно чата Facebook) похоже на мгновенную реакцию.

Как реализовать такую ​​замечательную вещь с помощью PHP?

Ответы [ 3 ]

7 голосов
/ 18 ноября 2011

Мгновенный чат, который вы описываете, обычно вызывается чем-то, что называется «Длинный опрос» или, если мы говорим об AJAX, «Комета» ( Википедия говорит оЭто).Опрос имеет тенденцию напрягать серверы Apache, но есть некоторые специализированные серверы для работы с ним, такие как APE .Я не уверен, но я думаю, что вы можете сделать то же самое с NodeJS и NGINX очень хорошо справляется со стрессом.

Здесь статья о том, как реализовать длинный опросный опрос с помощью PHP jQuery и AJAX.

Удачи, и я надеюсь, что это помогло!

3 голосов
/ 21 ноября 2011

Я согласен с @ joseph-szymborski, хотя было бы целесообразно начать поиск решений WebSocket, которые возвращаются к WebSockets через Flash и / или с длинным опросом.

Вот некоторые соответствующие вопросы SO:

Если вы хотите работать с PHP или использовать виртуальный хостинг, я бы порекомендовал посмотреть на размещенное в режиме реального времени веб-решение .

0 голосов
/ 28 июня 2014

Возможно, вы захотите использовать Node.js для обслуживания клиентов в режиме «реального времени», поскольку длительный опрос с использованием PHP / AJAX может вызвать нагрузку на ваш сервер. Но реализация сама по себе является сложной задачей. Просто говорю. Длительный опрос с помощью PHP / AJAX может вызвать нагрузку на ваш сервер.

Моя типичная теоретическая реализация одинакова:

  1. Создайте сервер Node.js для запроса базы данных.
  2. Отправка переменных и / или данных сеанса из php в Node js с помощью cURL.
  3. Разберите URL на вашем сервере Node.js и используйте переменные для проверки для изменений в базе данных.
  4. При возникновении изменений отправлять новые данные и отправлять клиенту.
...