FLASHとFLASHコミュニケーションサーバーに詳しい人、教えていただけますか。

現在、外注さんにFLASHとFLASHコミュニケーションサーバーを使ったライブチャットのシステムを
作ってもらっていますが、チャット中にブラウザを閉じてしまってもFLASHとサーバー間の通信(?)
状態は切断されないために、そのチャットが終了したというイベントを認識できなくて困っています。
(チャット終了時に何らかの処理を行ないたいわけです)
非タブブラウザだとブラウザを閉じれば信号がサーバーに送信されるけど、タブブラウザだとタブだけを
閉じてもセッションが切れないせいで信号が飛ばない云々みたいなことを言ってるんですが、こちらは
FLASHやコミュニケーションサーバーに関して全く知識がないものでアドバイスも何も出来ず困っています。

回答の条件
  • 1人2回まで
  • 登録:2009/07/31 22:06:13
  • 終了:2009/08/07 22:10:02

回答(2件)

id:kujirahand No.1

kujirahand回答回数27ベストアンサー獲得回数22009/08/01 12:40:30

ポイント35pt

JavaScript でページを閉じる前に、onbeforeunload のイベントが起きるので、

これをトリガーにしてチャット終了イベントを発行すれば良いのではないでしょうか。

調べてみると、IE/Firefox/Safari でできるようです。

http://d.aoikujira.com/blog/index.php?2008%252F12%252F15%252FJS%...

id:orihomot

ありがとうございました。下記の件と含めて、こちらも検討してみます。

2009/08/02 19:32:01
id:yofukaci No.2

yofukaci回答回数306ベストアンサー獲得回数102009/08/01 17:37:29

ポイント35pt

とりあえず、切断されたらしいと言うのは検出できます。たとえば、

http://www.stickam.jp/

のサービスもFLASHベースですができてます。

FLASHとFLASHコミュニケーションサーバーで定期的に(1分ぐらい?)でデータのやり取りをしておけば、1分間応答がなければ、

切断されたものだと判断してそう処理します。そのときにサーバーの方からセッションを切ってあげると言うことをすれば、

タブブラウザでも問題なくできます。

id:orihomot

ありがとうございました。取り急ぎこちらの方法で対応してみたいと思います。

2009/08/02 19:32:02
  • id:pacochi
    回答 1 の方に勝手ながら補足させていただきます。
    こちらの方法だと、ffserver などのサーバ側で切断処理ができないものでも、繋ぎっ放し状態を防ぐことができます。
    ただ、onbeforeunload を使うと、一部のタブブラウザ (Donut Q など) ではタブを閉じた際にイベントが発生しません。
    onunload イベントは発生するので、私はそちらの方を使って対処しています。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません