0

XMPP サーバーとして MongooseIM を使用しています。このサーバーは通常、トランスポートとして TCP を使用します。このサーバーは私の iOS クライアントで正常に動作します。しかし、Web アプリで同じサービスを作成したい場合、どの種類の JavaScript XMPP フレームワークでも機能しないことがわかりました。

ブラウザでは、TCP をトランスポートとして使用できないためです。代わりに、WebSocket と BOSH が代替手段となります。MongooseIM で WebSocket を使用すると、 が表示されますhand shake failed。BOSH の場合は を示します403 error。では、MongooseIM は本当に WebSocket や BOSH で動作するのでしょうか?

また、トランスポートとして TCP を使用すると、接続 URL は「example.org」になります。なぜ BOSH では「example.org/http-bind」になるのでしょうか? 2つのトランスポートに違いがあるのはなぜですか?

4

1 に答える 1

3

純粋な XMPP TCP 接続、BOSH、および Websockets は、まったく異なるプロトコルです。BOSH と Websockets はどちらも、エンドポイントが同じポートで実行されている場合にエンドポイントを区別するために、別々のサフィックス ( http-bind, ) を使用します。ws-xmppこれにより、サーバーは、クライアントが実際に使用するプロトコルを推測する必要がなくなり、適切な分離が提供されます。

BOSH と Websockets 接続に正確に使用する URL は何ですか? http://localhost:5280/http-bind前者の場合は、後者の場合は のようになりws://localhost:5280/ws-xmppます。

どの JS クライアントを試しましたか?

于 2015-02-11T21:10:41.307 に答える