Предложение или помощь, необходимые для реализации архитектуры ejabberd без сохранения состояния

Я хочу реализовать приложение для чата в реальном времени. Используемые для этого технологии, база данных и ОС:

  • Node.JS
  • Ejabberd как сервер XMPP
  • База данных MySQL
  • React-Native (внешний интерфейс)
  • ОС - Убунту 18.04

На сегодняшний день я добился настройки ejabberd, регистрации пользователя и получения статуса как из API, так и из командной строки. Например, я могу зарегистрировать пользователя с любого другого устройства/системы и из командной строки тоже. Но проблема в том, что все данные хранятся в базе данных ejabberd на сервере Ubuntu, из-за чего есть вероятность дублирования данных, также у меня уже есть структурированная и определенная база данных, и в ней уже есть данные.

В руководствах по ejabberd есть часть, где они упоминают архитектуру без сохранения состояния, в которой сервер ejabberd управляет частью XMPP с нашей базой данных (я мало что понял об этой вещи без сохранения состояния). Поэтому мне нужна помощь, пример или учебные пособия, где больше понимания архитектуры без сохранения состояния.

Уже прошел по указанным ниже ссылкам -

Неполезные ссылки -


person Community    schedule 15.03.2019    source источник
comment
Является ли ejabberd жестким требованием? Рассматривали ли вы альтернативы, которые могут облегчить ваш вариант использования (например, работа только в качестве сервера XMPP и использование вашей базы данных для аутентификации)?   -  person Wojtek    schedule 15.03.2019
comment
@Wojtek Я обсуждал с моим руководителем проекта, что производительное приложение для чата в реальном времени является жестким требованием, а ejabberd - нет. Буду рад узнать ваше мнение об альтернативе.   -  person    schedule 16.03.2019


Ответы (1)


Чтобы настроить ejabberd без сохранения состояния, вам необходимо настроить модуль хранения для хранения данных с помощью ReST API. ejabberd без сохранения состояния был разработан для сервиса fluux.io, но вы также можете реализовать его самостоятельно, используя вклады или API ejabberd. Например, для пользователей вы можете полагаться на ejabberd_auth_http: https://github.com/processone/ejabberd-contrib/tree/master/ejabberd_auth_http

person Mickaël Rémond    schedule 15.04.2019