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

jrs*_*end 5 iphone xmpp openfire xmppframework

我们正在努力实现XMPPBOSH我们的产品.该Strophe.jsJavaScript库工作正常,我们上WWW网站的需求.我们请求预绑定,它已经交付,然后我们使用Strophe的'attach'方法来启动我们的会话 - 然后我们就能够更新状态和发送/接收消息.在iOS方面,我们使用的XMPPFramework是包含BOSH传输的robbiehanson ,但是没有附加方法.以下是我试图让它发挥作用的一些悲痛.

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

BOSH:SEND [1248340729] = <body xmlns ="http://jabber.org/protocol/httpbind"sid ="568a3ae9"ack ="1248340728"rid ="1248340729"> <presence> </ presence> </ body >

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

BOSH:SEND [1064338700] = <body xmlns ="http://jabber.org/protocol/httpbind"ack ="1064338699"rid ="1064338700"> <presence> </ presence> </ body>

并回来:

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"inactivity ="300"polling ="5"wait ="60"> <stream:features> <mechanisms xmlns ="urn:ietf:params:xml:ns:xmpp-sasl "> <mechanism> PLAIN </ mechanism> </ mechanisms> <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>

看起来像连接肯定,或连接挑战节期待我回复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"> <resource> api </ resource> </ bind> </ iq> </ body>

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"> <resource> api </ resource> </ bind> <错误代码="401"type ="auth"> <未授权xmlns ="urn:ietf:params:xml:ns:xmpp-stanzas"/> </ error> </ iq> </ body>

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

BOSH:SEND [1172064714​​] = <body xmlns ="http://jabber.org/protocol/httpbind"sid ="27e3745b"rid ="1172064715"> <iq type ="set"> <resource> api </ resource > </ bind> </ iq> </ body>

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

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

任何帮助将不胜感激.