Вопрос по xmpp – Ошибка недоступности службы OpenFire / XMPP 503 (XEP-0065 с использованием iOS XMPPFramework)

5

Problem : Я пытаюсь установить TURN-соединение (XEP-0065) с помощью iOS XMPPFramework и сервера OpenFire. Я хочу иметь возможность отправлять и получать файлы. Тем не менее, я получаю 503 службы недоступна ошибка.

Note : Основа моего кода взята из следующего урока:http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/

XML Error :

Я отлажен через TURNSocket.m. Он входит в processRequestResponse и имеет следующий XML. (Если я не ошибаюсь, это было отправлено мне из OpenFire, а не наоборот?) ...

<iq xmlns="jabber:client"
    type="error" 
    id="03CC977E-2645-4E87-AE78-536D985CA2B5" 
    from="[email protected]"
    to="[email protected]/12f10b69">
    <query xmlns="http://jabber.org/protocol/bytestreams" 
        sid="03CC977E-2645-4E87-AE78-536D985CA2B5"
        mode="tcp">
        <streamhost jid="proxy.beta.myCompany.co.uk"
            host="127.0.1.1"
            port="7777"/>
    </query>
    <error code="503"
        type="cancel">
        <service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
    </error>
</iq>

Почему там ошибка?

Update : XEP-0065 говорит следующее. Хотя эта ошибка немного отличается от моей, уместна ли она? Если так, то в чем проблема?

If the Proxy is unable to act as a StreamHost, the Proxy MUST return an error to the Requester, which SHOULD be <not-allowed/>.

<iq from='[email protected]/foo'
    id='uj2c15z9'
    to='streamer.example.com'
    type='error'>
  <error type='cancel'>
    <not-allowed 
        xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

Update В настоящий момент я выясняю, является ли проблемой включение или исключение ресурса JID в различных отправляемых и извлекаемых битах XML. Или, альтернативно, у меня даже нет «от». в следующем XML. документы подразумевают, что мне это нужно. Это проблема? Я не вижу текущего пути в коде, чтобы сделать "из" ...

<iq type="get" 
    to="beta.myCompany.co.uk"
    id="215784CF-81A8-403E-89BF-455C926BEAE5">
    <query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>

Update 19/04/12 11:00 am В ответ на ответ Мэтта Дж. Я публикую больше XML. Я не уверен, что Мэтт запросил полный XML-журнал того, что отправлено и получено, но на всякий случай вот оно. Обратите внимание, что эти журналы не все из одного прогона (потому что, когда я отлаживаю его, чтобы получить журналы XML, это вызывает тайм-ауты, поэтому я должен начать снова)

Sent :

<iq type="get" to="beta.myCompany.co.uk" 
    id="082A1987-384F-43CD-9E7B-A2C0E31F2CA8">
    <query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>

Response :

<iq xmlns="jabber:client" 
    type="result" 
    id="18EED477-B0E4-492D-89CF-CA692FCF13AD"
    from="beta.myCompany.co.uk" 
    to="[email protected]/72d23cd0">
    <query xmlns="http://jabber.org/protocol/disco#items">
        <item jid="pubsub.beta.myCompany.co.uk" 
            name="Publish-Subscribe service"/>
        <item jid="broadcast.beta.myCompany.co.uk" 
            name="Broadcast service"/>
        <item jid="search.beta.myCompany.co.uk" 
            name="User Search"/>
        <item jid="conference.beta.myCompany.co.uk" 
            name="Public Chatrooms"/>
        <item jid="proxy.beta.myCompany.co.uk" 
            name="Socks 5 Bytestreams Proxy"/>
    </query>
</iq>

Sent :

<iq type="get" 
    to="proxy.beta.myCompany.co.uk" 
    id="F1B5370C-234F-4F2D-93E7-D60D2C35D063">
    <query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>

Response :

<iq xmlns="jabber:client" 
    type="result" 
    id="F1B5370C-234F-4F2D-93E7-D60D2C35D063"
    from="proxy.beta.myCompany.co.uk" 
    to="[email protected]/32276f6">
    <query xmlns="http://jabber.org/protocol/disco#info">
        <identity category="proxy" 
            name="SOCKS5 Bytestreams Service" 
            type="bytestreams"/>
            <feature var="http://jabber.org/protocol/bytestreams"/>
            <feature var="http://jabber.org/protocol/disco#info"/>
    </query>
</iq>

Sent :

<iq type="get" 
    to="proxy.beta.myCompany.co.uk" 
    id="84904B7D-2BB2-4B8E-90BE-BE0F5A934764">
    <query xmlns="http://jabber.org/protocol/bytestreams"/>
</iq>

Response :

<iq xmlns="jabber:client" 
    type="result" 
    id="B412512B-FA27-4531-88BE-2FC0A26E6ED2"
    from="proxy.beta.myCompany.co.uk" 
    to="[email protected]/45ca808d">
    <query xmlns="http://jabber.org/protocol/bytestreams"/>
</iq>

Кроме того, мы также получаем потоковый хост из кода из запроса:NSXMLElement *streamhost = [query elementForName:@"streamhost"];

<streamhost xmlns="http://jabber.org/protocol/bytestreams"
    jid="proxy.beta.myCompany.co.uk"
    host="127.0.1.1" 
    port="7777"/>

Sent :

<iq type="set" 
    to="[email protected]beta.myCompany.co.uk/spark" 
    id="DD96A581-BFA3-47BC-A3C0-D26AD48D7442">
    <query xmlns="http://jabber.org/protocol/bytestreams" 
        sid="DD96A581-BFA3-47BC-A3C0-D26AD48D7442" 
        mode="tcp">
        <streamhost xmlns="http://jabber.org/protocol/bytestreams"
            jid="proxy.beta.myCompany.co.uk" 
            host="127.0.1.1"
            port="7777"/>
    </query>
</iq>

Это не дает ответа, но мне кажется, что при сравнении с примером 17XEP-0065, ОДНАКО, если не включить ресурс в jID, переданный в TurnSocket.m ([email protected], а не [email protected]/spark), тогда этот запрос на отправку изменится соответствующим образом

<iq type="set"
     to="[email protected]" **LOOK! NO RESOURCE!**
     id="5D08B85E-CA78-4AA8-A893-C1DC571A9808">
     <query xmlns="http://jabber.org/protocol/bytestreams" 
        sid="5D08B85E-CA78-4AA8-A893-C1DC571A9808" 
        mode="tcp">
        <streamhost xmlns="http://jabber.org/protocol/bytestreams"
            jid="proxy.beta.myCompany.co.uk"
            host="127.0.1.1"
            port="7777"/>
      </query>
</iq>

и XML в моем оригинальном вопросе выше возвращается! (с кодом ошибки 503). Кроме того, я замечаю, что этот xml содержит «streamhost», но на этом этапе он должен фактически содержать «streamhost-used»? Почему там ошибка? Должен ли я включать ресурс в разделы «до»?

Minor Update 19/04/2012 15:07 : Я добавил xmpp.proxy.transfer.required как ложный на OpenFire. Это связано с этими обсуждениями:Вот а такжеВот, Я не настроил этот сервер (это сделал мой коллега), и я не понимаю, что он означает, но, похоже, он не изменил мою проблему.

Update 20/04/2012 10:00 : Моя ошибка 503, я думаю, правильно там, когда я не включаю ресурс (в соответствии сэтот). Хотя даже если это так, я не уверен, почему я не получаю ответ с полным jID.

Спасибо за ваш ответ, Мэтт! Я уверен, что теперь мы можем довести это до решения. Я начну собирать полный журнал XML. Однако я не уверен, если при передаче JID в TurnSocket.m у него должен быть ресурс или нет? например, friendsUsername @ domain или friendsUsername @ domain / resource. Andy A
Чтобы ответить на одну часть вашего вопроса, клиент никогда не отправляет «от». - он добавляется сервером, когда он принимает раздел от клиента, к полному JID клиента (т.е. включает в себя ресурс). MattJ
Я думаю, если бы вы могли получить более полный XML-журнал того, что отправлено / получено при попытке инициировать передачу, это помогло бы. Похоже, вы отправляете раздел получателю, который должен перейти к прокси. MattJ
Привет Мэтт. Обратите внимание, что я ответил на мою первоначальную проблему, но для ясности я начал новый вопрос, чтобы сосредоточиться на части, которая в настоящее время вызывает у меня проблемы. Если вы хотите взглянуть, это здесь ...stackoverflow.com/questions/10297009/… Andy A

Ваш Ответ

1   ответ
7

что я не предоставлял полный JID. например, я предоставлял friendsUsername @ domain, а не friendsUsername @ domain / resource.

Однако я все еще не установил успешное соединение и открыл новый вопрос.Вот

Это не правда.

Похожие вопросы