2014-11-17 2 views
0

6E64864A-36AF-4B83-8EF5-6E58C4A6117AWhen Я пытаюсь создать такую ​​же комнату дважды подряд, я ПРИЕМ строфу присутствия от службы, содержащего «201» код состояния оба раза.Неожиданное присутствие строфа для MUC создания номера

Ожидаемое поведение? Из XEP-0045, похоже, 201 следует отправлять ТОЛЬКО, когда комната была создана в первый раз.

Пожалуйста, помогите мне понять это. Почему код статуса 201 отправляется одновременно?

Как я могу дифференцировать ч/б создание новой комнаты или присоединиться к существующей комнате?

Пожалуйста, смотрите ниже последовательности:

--------- Первый запрос начинается здесь

SEND: <presence to="[email protected]/GJ"> 
<x xmlns="http://jabber.org/protocol/muc"/> 
<x xmlns="vcard-temp:x:update"><photo/></x></presence> 


RECV: <presence xmlns="jabber:client" from="[email protected]/GJ" to="[email protected]/imac"> 
<x xmlns="vcard-temp:x:update"><photo/></x> 
<x xmlns="http://jabber.org/protocol/muc#user"> 
<item jid="[email protected]/imac" affiliation="owner" role="moderator"/> 
<status code="110"/><status code="201"/></x></presence> 
// configure the room persistent here 
//<field type="boolean" var="muc#roomconfig_persistentroom" value="1"/> 
SEND: <iq type="set" to="[email protected]" id="6E64864A-36AF-4B83-8EF5-6E58C4A6117A"> 
<query xmlns="http://jabber.org/protocol/muc#owner"><x ......... 

RECV: <iq xmlns="jabber:client" from="[email protected]" 
to="[email protected]/imac" id="6E64864A-36AF-4B83-8EF5-6E58C4A6117A" type="result"> 
<query xmlns="http://jabber.org/protocol/muc#owner"/></iq> 

--- ------ Второй запрос начинается здесь

SEND: <presence to="[email protected]/GJ" type="unavailable"> 
<x xmlns="vcard-temp:x:update"><photo/></x></presence> 

SEND: <presence to="[email protected]/GJ"> 
<x xmlns="http://jabber.org/protocol/muc"/> 
<x xmlns="vcard-temp:x:update"><photo/></x></presence> 

RECV: <presence xmlns="jabber:client" from="[email protected]/GJ" to="[email protected]/imac" type="unavailable"> 
<x xmlns="vcard-temp:x:update"><photo/></x><x xmlns="http://jabber.org/protocol/muc#user"><item affiliation="owner" role="none"/> 
<status code="110"/></x></presence> 

RECV: <presence xmlns="jabber:client" from="[email protected]/GJ" to="[email protected]/imac"> 
<x xmlns="vcard-temp:x:update"><photo/></x> 
<x xmlns="http://jabber.org/protocol/muc#user"> 
<item jid="[email protected]/imac" affiliation="owner" role="moderator"/><status code="110"/><status code="201"/></x></presence> 

---------------------- Config строфа отправляется после первого запроса

SEND: <iq type="set" to="[email protected]" id="C72C4629-B318-4733-884B-B6A8BEAFB50F"> 
<query xmlns="http://jabber.org/protocol/muc#owner"> 
<x xmlns="jabber:x:data" type="submit"><field type="hidden" var="FORM_TYPE"><value>http://jabber.org/protocol/muc#roomconfig</value> <field type="boolean" var="muc#roomconfig_enable_logging" value="1"/> 
<field type="text-single" var="muc#roomconfig_roomname" value="IdeaFactory"/> <field type="boolean" var="muc#roomconfig_membersonly" value="1"/> 
<field type="boolean" var="muc#roomconfig_moderatedroom" value="0"/> 
<field type="boolean" var="muc#roomconfig_persistentroom" value="1"/> <field type="boolean" var="muc#roomconfig_publicroom" value="0"/> <field type="text-single" var="muc#roomconfig_maxusers" value="10"/> <field type="jid-multi" var="muc#roomconfig_roomowners" value="[email protected]"/> <field type="boolean" var="muc#roomconfig_changesubject" value="1"/></field></x> </query></iq> 
+0

Какое программное обеспечение предоставляет компонент MUC? – Flow

+0

ejabberd mod_muc из proceesone – GJain

ответ

1

После того, как войти в комнату и получить код состояния 201, вы должны либо принять конфигурацию по умолчанию, либо явно настроить комнату (см. section 10.1 of XEP-0045). Если вы отправляете недоступное присутствие перед выполнением любого из этих действий, сервер уничтожит помещение. Таким образом, комната на самом деле «вновь создана» и раз в вашем примере.

Кроме того, для некоторых серверов настройка по умолчанию для комнаты является «временной», то есть комната разрушается, когда последний участник уходит. Вероятно, вы хотите настроить его как «постоянную комнату», чтобы он оставался вокруг.

+0

выглядит как у меня есть default_room_options: persistent: true для ejabberd config .... тогда я не получаю 201 для второго запроса. Я рассмотрю, почему config от клиента не работает ... Принимая ответ для разъяснений – GJain

+0

didReceivePresence -i я получаю код статуса 303 в ответ после настройки комнаты. Можете ли вы, пожалуйста, помочь мне на этом @legoscia –

+0

@GaganJoshi Здесь вы можете найти число числовых кодов состояния: https://xmpp.org/extensions/xep-0045.html#registrar-statuscodes-init – legoscia

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

  • Нет связанных вопросов^_^