2

ejabberd サーバーで javascript を使用して XMPP との strophe 接続を作成しようとしています。ページが読み込まれると接続でき、切断ボタンがクリックされると切断できます。

今問題は、接続が有効であり、ユーザーが誤ってページを更新した場合、私の JavaScript が再度接続しようとしており、それに応答して取得していることです。(以前の接続がまだ生きている可能性があるためです)

<body xmlns='http://jabber.org/protocol/httpbind'>
    <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
            <not-authorized/>
    </failure>
</body>

しばらくしてページを再度更新すると、接続が正常に確立されるため、ページが誤って更新された場合に接続をリセットして、ユーザーがシームレスな接続を取得するにはどうすればよいですか。

4

2 に答える 2

3

ページの更新後も接続を維持したい場合は、、jidおよびsid変数ridを、必要な他の状態とともに、sessionStorageなどに保持します。その後、を使用attach()してXMPPセッションを再開できます。

于 2012-03-10T05:57:03.763 に答える
0

同じ JID でログインしていると思いますが、これは許可されていません。衝突がないように、ランダムなリソースを JID に設定する必要があります。したがって、ユーザーを JID でログに記録する代わりに、 JIDuser@domainを使用する必要がありますuser@domain/some_random_resource

また、原則として、そこで聞いてonbeforeunload切断することもできます。これは Webkit ベースのブラウザーでは機能しませんが、それ以外のブラウザーでは機能します。

于 2012-03-09T18:31:31.673 に答える