Openfire prebind + robbiehanson / XMPPFramework使用BOSH无法正常工作

时间:2011-12-14 21:33:54

标签: iphone xmpp openfire bosh xmppframework

我们正尝试为XMPP实施BOSH我们的产品。 Strophe.js javascript库可以很好地满足我们在WWW站点上的需求。我们请求预绑定,它已经交付,然后我们使用Strophe的'attach'方法来启动我们的会话 - 然后我们就能够更新状态和发送/接收消息。在iOS方面,我们使用的是包含BOSH传输的robbiehanson XMPPFramework,但是没有附加方法。以下是我试图让它发挥作用的一些悲痛。

我预先绑定,获取我的sid / jid / rid,然后在bosh transport和其他文件中设置内部逻辑,说我们已经连接了。然后,如果我尝试更新状态,包括给定的SID,我发送:

  

BOSH:SEND [1248340729] =< body xmlns =“http://jabber.org/protocol/httpbind”sid =“568a3ae9”ack =“1248340728”rid =“1248340729”><存在>< /存在>< /体>

但是没有得到任何答复。那是最后一个。如果我尝试更新状态而不指定SID,我发送:

  

BOSH:SEND [1064338700] =< body xmlns =“http://jabber.org/protocol/httpbind”ack =“1064338699”rid =“1064338700”><存在>< /存在>< /体>

然后回来:

  

BOSH:RECD [1342811427] =< body xmlns =“http://jabber.org/protocol/httpbind”xmlns:stream =“http://etherx.jabber.org/streams”authid =“9ef0ccdb”sid =“9ef0ccdb”secure =“true”requests = “2”不活动=“300”轮询=“5”等待=“60”><流:特征><机制xmlns =“urn:ietf:params:xml:ns:xmpp-sasl”> <机构> PLAIN< /机构>< /机制>< compression xmlns =“http://jabber.org/features/compress”><方法>的zlib< /方法>< /压缩>< bind xmlns =“urn:ietf:params:xml:ns:xmpp-bind”/>< session xmlns =“urn:ietf:params:xml:ns:xmpp-session”/>< /流:特征>< /体>

看起来像是连接肯定,或连接挑战节期待我用PLAIN信息回复 - 但这已经与预绑定建立了。如果是连接肯定,则下一行没有意义。如果使用上面连接字符串提供的SID,就好像它是一个肯定(我不确定),这些是下一行:

  

BOSH:SEND [1342811427] =< body xmlns =“http://jabber.org/protocol/httpbind”sid =“9ef0ccdb”rid =“1342811428”>< iq type =“set”>< bind xmlns =“urn:ietf:params:xml:ns:xmpp-bind”><资源> API< /资源>< /绑定>< / IQ>< /体>

     

BOSH:RECD [1342811427] =< body xmlns ='http://jabber.org/protocol/httpbind'>< iq xmlns =“jabber:client”type =“error”to =“chat。*。com / 9ef0ccdb”>< bind xmlns =“urn:ietf:params:xml:ns:xmpp-bind”><资源> API< /资源>< /绑定><错误代码=“401”type =“auth”><未授权的xmlns =“urn:ietf:params:xml:ns:xmpp-stanzas”/>< /错误>< / IQ>< /体>

我没有被授权。现在,如果我尝试使用预绑定期间协商的SID,则最后两行是不同的:

  

BOSH:SEND [1172064714​​] =< body xmlns =“http://jabber.org/protocol/httpbind”sid =“27e3745b”rid =“1172064715”>< iq type =“set”><资源> API< /资源>< /绑定>< / IQ>< /体>

     

BOSH:RECD [1172064714​​] =< body xmlns =“http://jabber.org/protocol/httpbind”>< /体>

空响应。然后,如果我再次尝试更新我的状态,它会给我一个文字404页面,说明存在无效的SID。当我使用openfire提供的SID时,如果我重新尝试了状态更新,它会继续给我401 not authorized

非常感谢任何帮助。

0 个答案:

没有答案