Я пытаюсь использовать модуль bosh, работающий на моем сервере ejabberd.
Клиент (используя jabbernet) начинает с отправки:
<body content="text/xml; charset=utf-8" to="localhost" wait="60" hold="1"
xml:lang="en-GB" rid="1368823140" xmlns="http://jabber.org/protocol/httpbind" />
Тогда я получаю с сервера ответ без элемента:
<body authid='17254393595248629793' xmlns='http://jabber.org/protocol/httpbind' sid='54a265d3d69252744d63d2cf6ec74d366aa24f3b'
wait='60' ver='1.11' polling='2' inactivity='30' hold='1'
xmpp:restartlogic='true' requests='2' secure='true' maxpause='120'
xmlns:xmpp='urn:xmpp:xbosh' xmlns:stream='http://etherx.jabber.org/streams' from='localhost'/>
Тогда, согласно xep-0206 :
Если в ответ на создание сеанса диспетчера соединений не включен элемент stream: features, клиент ДОЛЖЕН отправлять пустые элементы запроса, пока не получит ответ, содержащий элемент.
Таким образом, клиент отправляет каждые 2 секунды:
<body to="localhost" sid="54a265d3d69252744d63d2cf6ec74d366aa24f3b" rid="1368823142" xmlns="http://jabber.org/protocol/httpbind" />
Но получает только с сервера ejabberd:
<body xmlns='http://jabber.org/protocol/httpbind'/>
И в конце концов (через 30 секунд) происходит сбой:
<body type='terminate' condition='remote-stream-error' xmlns='http://jabber.org/protocol/httpbind'/>
Что я делаю не так?