Существует несколько различных способов расширения сервера XMPP:
Компонент XMPP
Компоненты существуют отдельно для сервера XMPP.Вы можете написать их практически на любом языке, и они подключаются к серверу XMPP по протоколу (http://xmpp.org/extensions/xep-0114.html). Компонент регистрируется для обработки субдомена сервера, и любые сообщения / IQ, адресованные этому компоненту, передаются прямо изСервер XMPP для вашего кода, для обработки и ответа. Например, сообщение может быть адресовано user@search.domain.com/resource
вместо user@domain.com/resource
.
Преимущество компонента заключается в том, что он должен работать с любым XMPPсервер (который в любом случае поддерживает компоненты, которые являются основными). Если вы перейдете с Openfire на ejabberd, например, вам не нужно будет выполнять какую-либо работу. Недостатком является то, что они не могут получить доступ к данным внутри самого сервера.Хорошо, если вы хотите предоставить доступ к внешним данным (скажем, своей собственной базе данных), но этого может быть недостаточно.
Плагин / Модуль
Это зависит от сервера идолжен быть написан на том же языке, что и сервер. Openfire имеет плагины, ejabberd имеет модули. Они могут интегрироватьСервер XMPP и дает вам гораздо больше возможностей.Однако для переключения серверов XMPP потребуется начать разработку с нуля.Если вы хотите создать плагин для Openfire, взгляните на Руководство по плагинам и Openfire API: API Docs .API является обширным, и вы можете получить большинство доступных для сервера данных.
Изменить исходный код
Не очень хороший вариант, но, возможно, стоит упомянуть - вы могли быскачайте исходный код Openfire, внесите изменения и пересоберите его.Я сделал бы это, только если бы вы были уверены, что API не сможет дать вам то, что вам нужно.