Сервер Openfire не сохраняет чат в таблице ofMucRoom

0

Я разрабатываю приложение для iOS и использую сервер openfire. После успешных исследований мне удалось создать комнату. Комната, которую я создаю, настойчива, и я вижу, что эта комната включена на вкладке "Групповой чат" в открытом режиме и также является постоянной. Но когда я открываю свою базу данных mysql, я не вижу никакой записи в таблице mucRoom. Плюс таблица mucMember также пуста.

Даже используя искровой клиент, я не могу войти в комнату, созданную, поскольку он всегда говорит "Подключение"... На стороне iOS я получаю ответ в xml как "Room Locked до тех пор, пока не будет подтверждена конфигурация".

В администраторе openfire, когда я редактирую вновь созданную комнату и сохраняю ее снова, она появляется в db, и тогда я могу отправлять/получать сообщения с помощью Spark-клиента.

В чем проблема? Почему openfire не сохраняет комнату в db из кеша? Даже нет такой настройки в openfire. Это главная проблема, когда я не могу найти правильный ответ на нее. Кто-нибудь с решением?

Теги:
xmpp
openfire

1 ответ

0

Ответ вашего клиента iOS говорит вам об этой проблеме. Установки комнаты должны быть подтверждены создателем комнаты. До этого времени он заблокирован, и вы будете продолжать видеть это сообщение. Процесс создания комнатного описан здесь.

В моем клиентском приложении используется XMPPFramework iOS/OSX, и мой сервер Openfire настроен на создание "мгновенных номеров". XMPPFramework делает создание комнаты и подтверждение чрезвычайно простым. Добавляя делегат XMPP Room к потоку, вы получаете обратный вызов делегата, когда пользователь отправляет свое присутствие в комнату, которая еще не существует. В этот момент вы можете подтвердить настройки комнаты или изменить их соответствующим образом.

#pragma mark XMPPRoom Delegate

- (void)xmppRoomDidCreate:(XMPPRoom *)sender
{
    DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
    [self.xmppRoom configureRoomUsingOptions:nil]; //nil confirms the default settings
}

- (void)xmppRoomDidJoin:(XMPPRoom *)sender
{
    DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}

- (void)xmppRoomDidLeave:(XMPPRoom *)sender
{
    DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}

- (void)xmppRoom:(XMPPRoom *)sender occupantDidJoin:(XMPPJID *)occupantJID
{
    DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}

- (void)xmppRoom:(XMPPRoom *)sender occupantDidLeave:(XMPPJID *)occupantJID
{
    DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}

- (void)xmppRoom:(XMPPRoom *)sender didReceiveMessage:(XMPPMessage *)message fromOccupant:(XMPPJID *)occupantJID
{
    DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}

Я не заглядывал в детали, когда комната сохраняется, но я также заметил в моем случае, что есть расхождение в комнатах, отображаемых на странице администратора, из того, что находится в базе данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню