Веб-сервис XMPP openfire, PHP и Python

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

Внешний интерфейс использует библиотеку strophe для получения уведомлений с помощью BOSH с моего сервера openfire. Однако уведомления - это уведомления, а другие сообщения должны публиковаться моим приложением, и поэтому я думаю, что этот код должен находиться в бэкэнде. Первоначально я думал использовать библиотеки PHP XMPP, такие как XMPHP и JAXL, но затем я думаю, что это вызовет большие накладные расходы, поскольку каждый скрипт должен будет выполнять одни и те же шаги, такие как подключение, аутентификация и т. д., и я думаю, что это сделает PHP немного медленным. и не отвечает.

Теперь я думаю о создании промежуточного приложения, действующего как веб-служба, которую будет вызывать PHP, и это приложение будет обрабатывать материал с помощью службы XMPP. Преимущество этого заключается в том, что это приложение (сервер, если хотите) должно будет подключиться только один раз, и оно будет сидеть там, прослушивая порт. также я планирую построить его асинхронным способом, чтобы он сначала принимал все запросы от моего приложения PHP, а затем, когда запросов больше не было; заняться публикацией уведомлений. Я планирую создать этот сервис на Python, используя SleekXMPP.

Это как раз то, что я планировал. Я новичок в XMPP и во всей этой веб-службе и хотел бы получить ваши комментарии по этому поводу, касающиеся таких вопросов, как использование памяти и ЦП, преимущества и недостатки, проблемы масштабируемости, безопасность и т. д.

Заранее спасибо.

PS: - также, если что-то подобное уже существует (хотя я не нашел после долгих поисков в Google), пожалуйста, направьте меня туда.

РЕДАКТИРОВАТЬ --- Служба среднего уровня должна выполнять следующие действия (но не ограничиваться ими): 1. Публикация уведомлений для разных уровней групп и страниц сообщества. 2. Уведомление для одного пользователя о каком-либо событии. 3. Регистрация пользователя (можно сделать с помощью плагина пользовательского сервиса).

РЕДАКТИРОВАТЬ --- Также следует создать узлы pub-sub и подписывать и отписывать пользователей от этих узлов pub-sub.

Также я хочу хранить уведомления и сообщения в базе данных (openfire этого не делает). Будет ли это хорошим выбором?


person mlakhara    schedule 09.12.2012    source источник
comment
Можете ли вы дать больше информации о том, что будет делать это промежуточное приложение?   -  person Vincent Paca    schedule 10.12.2012


Ответы (1)


Мне кажется, что XMPP - это тяжелое решение для того, что вы делаете, учитывая, что связь является односторонней, и вы просто отправляете уведомления (без многопользовательского чата в реальном времени и т. д.).

Я бы подумал об использовании чего-то вроде Socket.io (http://socket.io) для канала server‹=>client вместе с Redis (http://redis.io) для постоянства.

person Marc    schedule 10.12.2012
comment
ну, я также буду разрабатывать чат и другие функции в реальном времени после того, как закончу работу с уведомлениями. Однако для чата мне нужно только реализовать код во внешнем интерфейсе (используя strophe), я думаю. - person mlakhara; 10.12.2012