Я планирую интегрировать уведомления в реальном времени в веб-приложение, над которым сейчас работаю. Я решил использовать 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 этого не делает). Будет ли это хорошим выбором?