Как интегрировать Django и XMPP-over-BOSH - PullRequest
2 голосов
/ 20 июня 2011

Мне нужен совет по настройке среды, основанной на Django и XMPP.

Мой сайт состоит из двух частей.

Часть A: пользователи используют XMPP-клиент в браузере,как Strophe.JS на странице, которая обслуживалась через Django.

Часть B: Используется другим набором пользователей для общения с пользователями, которые общаются с использованием части A сайта.Здесь пользователи также будут использовать XMPP-клиент в браузере, например Strope.JS, на странице, которая является сервером через Djano.

Поскольку связь происходит в браузере, я не буду использовать реальный поток XMPP, а XMPPнад BOSH.Я читал, что XMPP через BOSH де-факто является способом передачи сообщений XMPP через HTTP-интерфейсы.

Решение для части A простое.Обычная веб-страница с добавленной библиотекой Strophe.JS. Мне кажется, что сложная часть состоит в том, чтобы выяснить, как обращаться с пользователями части B. Мне нужно передавать сообщения XMPP между пользователями части A и пользователями части B.Пользователи части B должны иметь доступ к информации из системы Django для пользователя части A. Мне нужна довольно хорошая интеграция между XMPP и Django.

Может кто-нибудь сказать мне, как я написал бы такую ​​систему??Какие инструменты я бы использовал?Буду ли я использовать автономный сервер XMPP и интегрировать его в Django?Если да, то?Когда пользователь в части A инициирует сеанс чата, он будет отображаться для пользователя части B сайта, но какой пользователь будет обрабатывать запрос чата пользователя, будет зависеть от некоторой информации, полученной из Django.

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

1 Ответ

1 голос
/ 29 июня 2011

Вам определенно понадобится отдельный сервер Jabber / XMPP (например, ejabberd).Я сделаю дикое предположение, что пользователи части A общаются в чате A (MUC), а те же пользователи в части B общаются в чате B. Вам нужно написать 3 сценария / демона (я использую perl и Net :: Jabber(Net :: XMPP не может присоединиться к MUC)).Это могут быть: scripta, scriptb, mediator.

  • script / daemon A войдет в комнату MUC A, а медиатор станет частью его реестра.Он будет прослушивать все разделы сообщений, но будет реагировать только на некоторые (например, раздел сообщений с телом "SendToB MSG").Это сообщение отправлено пользователем, присоединившимся к чату А. Затем «RelayToB MSG» должен быть отправлен посреднику с помощью scripta (From: scripta@jabberserver.dom, To: mediator@jabberserver.dom).Посредник отправит MSG «RelayFromA» в MUC B на основе части «RelayToB» тела раздела сообщения.scriptb получит «RelayFromA MSG» и отправит «MSG» в комнату чата B.

  • script / daemon B (та же логика), а mediator@jabberserver.dom будет в списке пользователей.

  • медиатор не присоединится ни к одному чату.В его составе будут scripta@jabberserver.dom и scriptb@jabberserver.dom.Он будет передавать сообщения только между чатами.

Я уже разместил здесь пример кода Как создать службу прокси / протоколирования jabber / XMPP? .Код будет применять scripta / b.Код довольно длинный, и убедитесь, что вы проверяете подпрограммы InMessage и InPresence.Другие вещи касаются моих потребностей.

Надеюсь, я был достаточно ясен.Не стесняйтесь задавать больше вопросов.

РЕДАКТИРОВАТЬ:

  1. Создать сценарий, используя Perl и Net :: Jabber.Пользователь, который будет входить на сервер XMPP, будет mediator@jabberserver.dom.Каждый сможет отправлять ему сообщения.Посредник будет пересылать сообщения специалисту службы поддержки в формате (От: user1 MSG).Служба поддержки ответит на mediator@jabberserver.dom с сообщением (Ответ: пользователь1 ОТВЕТИТЬ).Посредник перенаправит REPLY пользователю 1.
  2. Проверьте mod_shared_roster здесь http://www.ejabberd.im/shared-roster-all (пример 4) и здесь http://www.process -one.net / docs / ejabberd / guide_en.html # htoc61 .

Я думаю, что второе решение не требует дополнительного кодирования, кроме кода javascript / strophe на вашей странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...