我正在尝试使用在ejabberd服务器上启动并运行的bosh模块。
客户端(使用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'/>
我在做什么错?