PHP и XMPP в обе стороны

Я пытаюсь создать веб-приложение с PHP и XMPP. Одно из требований заключается в том, что когда клиент Javascript в браузере отправляет событие на сервер через XMPP, PHP начинает работать и обслуживает этот запрос. Как вы знаете, XMPP позволяет своим клиентам «прослушивать» различные типы событий и мгновенно активироваться, когда они находят нужное событие. Конечно, PHP работает только во время HTTP-запроса, поэтому, согласно моим исследованиям, PHP-клиенты XMPP работают только «в одну сторону», т.е. они могут только генерировать события, а не прослушивать и потреблять их.

Мои вопросы к экспертам: 1. Правильно ли мое исследование? Является ли PHP/XMPP только односторонним? 2. Есть ли способ обойти эту проблему с помощью PHP? 3. Есть ли у Ruby on Rails такая же проблема или он работает с XMPP «двусторонним» образом?

Большое спасибо, я ценю любую помощь в этом!

Ваше здоровье


person Ali    schedule 07.01.2011    source источник


Ответы (2)


Похоже, вы пытаетесь использовать PHP в качестве сервера XMPP, что может быть проблематично. Это, вероятно, выполнимо в Rails, но не идеально.

Возможно, стоит взглянуть на одну из многих платформ XMPP с открытым исходным кодом, например ejabberd.

person Toby Hede    schedule 07.01.2011
comment
Согласен, есть и другие, я использовал openfire. igniterealtime.org/projects/openfire - person kenny; 08.01.2011

Я действительно не понял, что именно вы подразумеваете под «односторонним использованием PHP/XMPP». Однако, по моему опыту, нет никаких ограничений, если вы решите работать с комбинацией PHP + XMPP, где ваши клиенты браузера используют какую-то библиотеку javascript xmpp.

Вот как будет проходить процесс настройки PHP/XMPP:

  1. Браузер отправляет опрос ajax
  2. PHP-скрипт на вашем веб-сервере получает этот опрос ajax
  3. Внутренне PHP-скрипт общается с конечной точкой bosh
  4. PHP-скрипт ожидает ответа от сервера, пока не истечет время ожидания
  5. При ответе или тайм-ауте PHP ретранслирует ответ от конечной точки bosh клиенту вашего браузера.

В этом потоке PHP-скрипт действует как менеджер соединений между вашим браузером и jabber-сервером. Действительно, при высоком трафике этот метод не рекомендуется, потому что вскоре ваш веб-сервер может перестать принимать новые опросы ajax из-за того, что скрипты PHP уже ожидают ответа от конечной точки bosh.

Вы можете попробовать образец примера boshchat.php из библиотека Jaxl, которая демонстрирует точно такой же поток, который я описал выше.

person Abhinav Singh    schedule 08.01.2011