xmpp сервер и проблема с составом

Я работаю над приложениями для общения в чате с использованием сервера XMPP. Я хочу создать двух друзей пользователя, поэтому мне нужно добавить список с использованием запроса mysql. Я сделал запись в двух таблицах. (1) ofRoster (2) ofRosterGroups. Я делаю запись в обеих таблицах, но она не работает.

Есть ли что-нибудь, чего мне не хватает. Я могу сделать это с помощью панели администратора, но я не хочу этого делать.


person Tarun    schedule 04.06.2012    source источник


Ответы (2)


Я думаю, вы используете openfire (эти таблицы в SQL выглядят как установка openfire). Если это так, то таблица, которую вы должны отредактировать, называется «ofGroupUser». Чтобы добавить пользователя в группу, вам необходимо выполнить sql-вставку в эту таблицу, где имя группы - это группа, в которую вы хотите добавить пользователя, имя пользователя - это пользователь, которого вы добавляете в группу, а администратор - это флаг этого полномочия пользователя (просто используйте 0). Пример вставки будет выглядеть так:

ВСТАВИТЬ В ЗНАЧЕНИЯ ofGroupUser («имя группы», «пользователь», администратор);

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

По сути, ручная вставка sql даст желаемые результаты, и, если вы просто тестируете некоторые функции, будет работать нормально, пока вы перезагружаете сервер. Если вы используете openfire и вам нужно выполнять групповую административную работу каким-либо образом, помимо веб-интерфейса, я бы рассмотрел возможность использования другого сервера. Насколько я знаю, openfire не очень хорош с администрированием за пределами своего веб-интерфейса. Вот список многих серверов xmpp с открытым исходным кодом. Я бы порекомендовал ejabberd (как упоминалось выше), у него очень хороший инструмент управления называется ejabberdctl с доступным модулем расширения под названием mod_ctlextra (вот страница руководства для него в котором перечислены команды), которые позволят вам делать то, что, как я полагаю, вы хотите. Тогда вам не нужно беспокоиться о sql и перезапуске, просто используйте их инструмент, как и должно быть.

Кстати, ejabberd чрезвычайно эффективен из-за характера языка, на котором он написан: Erlang. Отличный материал.

Надеюсь, это поможет!

person NKamrath    schedule 06.06.2012

Предположительно вы используете модули odbc с ejabberd. Однако схема sql определяет две таблицы rostergroups и rosterusers, а не те, которые вы упомянули в вопросе. В любом случае вам не следует обновлять таблицы напрямую, ejabberd сохраняет внутреннее состояние и не получает уведомлений о ваших изменениях.

Для этого нужно, чтобы пользователи отправляли взаимные подписки и принимали их в соответствии с rfc . Также может оказаться полезным обмен элементами реестра.

person ggozad    schedule 06.06.2012