Неожиданное присутствие строфа для MUC создать комнату

6E64864A-36AF-4B83-8EF5-6E58C4A6117A При попытке создать одну и ту же комнату два раза подряд я получаю раздел присутствия из службы, в которой код состояния "201" находится оба раза.

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

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

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

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

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

SEND: <presence to="erik_yo@conference.localhost/GJ">
<x xmlns="http://jabber.org/protocol/muc"/>
<x xmlns="vcard-temp:x:update"><photo/></x></presence>


RECV: <presence xmlns="jabber:client" from="erik_yo@conference.localhost/GJ" to="erik@localhost/imac">
<x xmlns="vcard-temp:x:update"><photo/></x>
<x xmlns="http://jabber.org/protocol/muc#user">
<item jid="erik@localhost/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="erik_yo@conference.localhost" id="6E64864A-36AF-4B83-8EF5-6E58C4A6117A">
<query xmlns="http://jabber.org/protocol/muc#owner"><x .........

RECV: <iq xmlns="jabber:client" from="yo@conference.localhost" 
to="erik@localhost/imac" id="6E64864A-36AF-4B83-8EF5-6E58C4A6117A" type="result">
<query xmlns="http://jabber.org/protocol/muc#owner"/></iq>

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

SEND: <presence to="erik_yo@conference.localhost/GJ" type="unavailable">
<x xmlns="vcard-temp:x:update"><photo/></x></presence>

SEND: <presence to="erik_yo@conference.localhost/GJ">
<x xmlns="http://jabber.org/protocol/muc"/>
<x xmlns="vcard-temp:x:update"><photo/></x></presence>

RECV: <presence xmlns="jabber:client" from="erik_yo@conference.localhost/GJ" to="erik@localhost/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="erik_yo@conference.localhost/GJ" to="erik@localhost/imac">
<x xmlns="vcard-temp:x:update"><photo/></x>
<x xmlns="http://jabber.org/protocol/muc#user">
<item jid="erik@localhost/imac" affiliation="owner" role="moderator"/><status code="110"/><status code="201"/></x></presence>

---------------------- Конфиг раздел отправляется после первого запроса

 SEND: <iq type="set" to="erik_yo@conference.localhost" 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="erik@localhost"/> <field type="boolean" var="muc#roomconfig_changesubject" value="1"/></field></x> </query></iq>

1 ответ

Решение

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

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

Другие вопросы по тегам