2011-07-25 19 views
1

こんにちは私の目的は、セッションが無効になったときにキャッチして、FlexClientが加入しているすべての宛先にメッセージを送信することです。セッションがタイムアウトしたかどうかを理解する方法を教えてください

私は、sessionCretaed、sessionDestroyed、clientCreated、clientDestroyed、messageClientCreated、messageClientDestroyedをリッスンするサービスを実装しました。

問題は、私はmessageClientDestroyedを捕まえて、その接続先にユーザが切断したというメッセージを送信したいと思います。しかし、サブトピックを追加するとblazedsはmessageClientを破壊します。セッションが無効になり、すべてのmessageClientが破棄されるユーザーは別の場所に入り、サブトピックを消費者に追加するだけです。

このメカニズムを実装するための他のソリューションも開かれています。ユーザーがセッションタイムアウトで切断したり、サイトブラウザなどを閉じたときに、キャッチして購読先にメッセージを送信したいと考えています。

ありがとうございました。

答えて

1

私はこのトピックのマスターではありませんが、d/cの後にFlexセッションライフサイクルイベントFlexSessionListenerを調整する必要があると思います。

フレックス側では、BlanDSがリソースを明示的にクリーンアップするように、Flex側でシャネルセットのdisconnectAll()を呼び出します。

あなたのクライアントが原因でタイミングを除外されている場合は、無効セッション・オン・ディスコネクトを使用するチャネル定義を設定することができます=真

これら2)は(FlexSessionListner.sessionDestroyedをトリガする必要があります。このメソッドのパラメータは、必要なものを推論することができるFlexSessionオブジェクトです。

+0

まずはお返事ありがとうございます。最初はあなたが言ったようにサービスを実装しましたが、私の目的は購読されたチャンネルにメッセージを送信するので、購読先を取得する必要があります。しかしblazedsはまずmessageClients、次にFlexClientを破壊し、最後にセッションを破棄します。私がsessionDestroyedでFlexClientやmessageClientを取得しようとすると、何も得られません。今はメッセージを送るためにmessageClientDestroyedイベントをキャッチしていますが、セッションが破棄されるときに呼び出されるのではなく、クライアントがサブトピックを追加するときに呼び出されるため、セッションが破棄されるか、 – maniacneron

+0

これは奇妙なことですが、sessionDestoryedに渡されたFlexSessionオブジェクトは、そのクライアントに残しておく必要があります。 MessageServiceインスタンスにアクセスできる場合は、pushMessageToClients()を呼び出すことができます.... http://livedocs.adobe.com/blazeds/1/javadoc/flex/messaging/services/MessageService.html –

関連する問題