Ejabberd Bosh отвечает без элемента <features> - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь использовать модуль 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'/>

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...