参考
协议 XMPP XEP-0206 (BOSH)
http://xmpp.org/extensions/xep-0206.html
通过BOSH 创建 会话经历的一般步骤包括
(1)Session Creation 会话创建请求
(2)Authentication 身份验证
(3)Restart request 重启请求
(4)Resource binding request资源绑定请求
问题就出现在第三步的时候,之前步骤都是正确的
参考strophe不通过connection manager 连接到openfire的时候走的就是这个标准流程
(3)(4)数据流如下
(3)Restart request 重启请求
request:
<body rid='539419237' xmlns='http://jabber.org/protocol/httpbind' sid='e957c613'
to='tes-pc-10-05' xml:lang='en' xmpp:restart='true' xmlns:xmpp='urn:xmpp:xbosh'/>
response:
<body xmlns="http://jabber.org/protocol/httpbind" xmlns:stream="http://etherx.jabber.org/streams">
<stream:features>
<compression xmlns="http://jabber.org/features/compress">
<method>zlib</method>
</compression>
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/>
<session xmlns="urn:ietf:params:xml:ns:xmpp-session"/>
</stream:features>
</body>
(4)Resource binding request资源绑定请求
request:
<body rid='539419238' xmlns='http://jabber.org/protocol/httpbind' sid='e957c613'>
<iq type='set' id='_bind_auth_2' xmlns='jabber:client'>
<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/>
</iq>
</body>
response:
<body xmlns='http://jabber.org/protocol/httpbind'>
<iq xmlns="jabber:client" type="result" id="_bind_auth_2" to="tes-pc-10-05/e957c613">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<jid>a@tes-pc-10-05/e957c613</jid>
</bind>
</iq>
</body>
而 connectionmanager 在 3之后就不再返回任何数据一直到超时。
而另外一个库JSJaC,则可以顺利通过 connection manager连上openfire 这是因为
他把3,4合并在一起执行了
数据流如下
request:
<body
rid='812216'
sid='cjyvqeef8619c'
xmlns='http://jabber.org/protocol/httpbind'
key='e6711e9a605a2a1a28257baa57ee7fc69e5eea86'
xmpp:restart='true' <!-- 重启请求-->
xmlns:xmpp='urn:xmpp:xbosh'>
<!-- 资源绑定-->
<iq xmlns="jabber:client" type="set" id="bind_1">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<resource xmlns="urn:ietf:params:xml:ns:xmpp-bind">jsjac_simpleclient</resource>
</bind>
</iq>
</body>
response:
<body xmlns='http://jabber.org/protocol/httpbind'>
<iq type="result" id="bind_1" to="tes-pc-10-05/cjyvqeef8619c">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<jid>a@tes-pc-10-05/jsjac_simpleclient</jid>
</bind>
</iq>
</body>
我自己编写了一个js文件修复了这个问题,上传到了我的资源。
下载地址 http://download.csdn.net/detail/suncaishen/4282736