#php #erlang #ejabberd
#php #erlang #ejabberd
Вопрос:
Я пытаюсь создать приложение для онлайн-чата поверх ejabberd, я использую extauth, и до сих пор все работало нормально. Теперь я столкнулся с проблемой отправки сообщения от пользователя, которого нет в реестре B (какой-то модератор или что-то в этом роде), но ejabberd блокирует сообщение, потому что оба пользователя не подключены, я изучил функцию общего реестра Ejabberd, но она не работает с Extauth, я также попытался отфильтровать пакет (если пакет от модератора, чем просто переслать его, либо выполнить обычную обработку), но это не увенчалось успехом (не знаю, как переслать пакет и остановить выполнение перехватов).
Пожалуйста, помогите мне, как я могу достичь этой функциональности.
Спасибо
Ответ №1:
почему бы не подписывать пользователей друг на друга (отправляя последовательность subscribe-подписанный) — это может быть только временным. Подписавшись на пользователей, вы создадите записи в таблице реестра, которые позволят доставлять пакеты. Также, в зависимости от архитектуры вашего приложения для чата, возможно, попробуйте mod_muc?
хорошая ссылка на все потоки данных: http://xmpp.org /
Комментарии:
1. Подписка пользователей друг на друга — это последний вариант, но я хочу создать широковещательного пользователя.
Ответ №2:
Хотя форум старый, добавляю ответ для справки и изучения. Чтобы обойти перехваты и переслать сообщение, возможно, помогут следующие шаги
- Добавьте перехват для ‘filter_packet’ с большим приоритетом
- В этом выполните ваши проверки
- перешлите это, вызвав ‘run’ на другом перехватчике, который вы ищете
- отбросьте пакет в этот момент (поскольку об этом позаботится другой хук, для которого вызывается ‘run’)