5

XMPP私たちは私たちの製品のために実装しようとしていますBOSH。javascriptライブラリはStrophe.js、WWWサイトのニーズに合わせて正常に機能します。プリバインドをリクエストして配信し、Stropheの「attach」メソッドを使用してセッションを開始します。これにより、プレゼンスを更新し、メッセージを送受信できるようになります。XMPPFrameworkiOS側では、BOSHトランスポートを含むrobbiehansonを使用していますが、接続方法はありません。以下は、これを機能させることを試みた私の悲しみの一部です。

事前バインドし、sid / jid / ridを取得してから、boshトランスポートおよびその他のファイル内の内部ロジックを設定して、すでに接続されていることを示します。次に、指定されたSIDを含めてプレゼンスを更新しようとすると、次のように送信します。

BOSH:SEND [1248340729] = <body xmlns = "http://jabber.org/protocol/httpbind" sid = "568a3ae9" ack = "1248340728" rid ="1248340729"><プレゼンス></presents> </ body >>

しかし、まったく返事をもらえません。それが最後です。SIDを指定せずにプレゼンスを更新しようとすると、次のように送信します。

BOSH:SEND [1064338700] = <body xmlns = "http://jabber.org/protocol/httpbind" ack = "1064338699" rid ="1064338700"><プレゼンス></presents> </ 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></ 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情報で応答することを期待する接続チャレンジスタンザのように見えますが、これはprebindですでに確立されています。それが接続の肯定である場合、次の行は意味がありません。上記の接続文字列によって提供された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> <error code = "401" type ="auth"><未承認xmlns = "urn:ietf:params:xml:ns:xmpp-stanzas" /> </ error> </ iq> </ body>

私は許可されていません。ここで、プリバインド中にネゴシエートされたSIDを使用しようとすると、最後の2行が異なります。

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

どんな助けでも大歓迎です。

4

0 に答える 0