2015-08-07 2 views
0

Я пытаюсь создать чат с использованием StropheJSОшибка создания Chat Room StropheJS с ejabberd

Мой код:

var presence = $pres({ to: "[email protected]@localhost/yashwanth, from: Strophe.getBareJidFromJid(connection.jid) }); 
    Groupie.connection.send(presence.tree()); 
    Groupie.connection.muc.createInstantRoom("[email protected]/yashwanth", 
     function(status) { 
     console.log("Room Created Successfully", status); 
     }, 
     function(status) { 
     console.log("Error Creating Room", status); 
     }); 

Создавая комнату я обращенную ошибку ниже.

Я нашел, что roomJID должен быть в формате room_name @ conference @ HOST @/nickname. Так что в соответствии с форматом я отправляю это. Но это не создает комнату.

Error Creating Room <iq xmlns=​"jabber:​client" from=​ 
"[email protected]" to=​"[email protected]/​ 
5441440311438943022710601" type=​"error" id=​"1:​sendIQ">​<query xmlns=​"http:​/​/​ 
jabber.org/​protocol/​muc#owner">​…​</query>​<error code=​"404" type=​"cancel">​ 
<item-not-found xmlns=​"urn:​ietf:​params:​xml:​ns:​xmpp-stanzas">​</item-not- 
found>​<text xmlns=​"urn:​ietf:​params:​xml:​ns:​xmpp-stanzas">​Conference room 
does not exist​</text>​</error>​</iq> 

И я использую ejabberd в качестве моего сервера XMPP. Если комната создает то, в какой базе данных могут быть сохранены детали, связанные с комнатой? Либо он сохраняет в muc_registered таблице или muc_room таблице?

ответ

1

Чтобы присоединиться к комнате в XMPP, вам не нужно ее создавать в первую очередь.

Что ваш код делает это:

  1. Он посылает присутствие в комнате, а это означает, что вы присоединиться к нему. Если он не существует, он будет создан.
  2. Вы пытаетесь создать комнату, которая всегда должна терпеть неудачу, поскольку комната всегда существует.
  3. Вы спрашиваете, где находится комната. Он не сохраняется, если он не является постоянным, что не соответствует вашему примеру, если вы не настроили ejabberd, чтобы установить параметры комнаты по умолчанию на постоянный. В противном случае вам нужно отредактировать параметры комнаты, как определено в XEP-0045 Multi User Chat, чтобы сделать ее постоянной. Стойкие комнаты хранятся в таблице Mnesia muc_room.
  4. createInstantRoom в плагине StropheJS MUC создать комнату с настройками по умолчанию, так же, как присоединиться, поэтому я не понимаю, зачем это нужно здесь.

Итак, я не могу сказать, чего вы пытаетесь достичь с помощью своего кода, но просто отправить присутствие в комнату достаточно, чтобы создать непостоянную чат-комнату и присоединиться к ней. Не нужно звонить createInstantRoom.

+0

Спасибо. Так что просто отправка присутствия в комнату создает комнату без настойчивости? – Yashwanth

+0

Да, не нужно использовать мгновенное создание места для этого. –

+0

Это отличный ответ. – Yashwanth

Смежные вопросы