退室されずにページを落ちた時の処理
現在チャットを作ってるのですが基本的なチャットシステムはほぼ完成しました。
ですが解決しにくいバグが残っています。
モード0で入室画面
モード1でチャット画面
モード2で退室画面
です。
クッキーはモード判定するクッキーと、ユーザーのチャットの設定のクッキーの2つを発行しています
●各画面の処理の仕方ですが入室画面は
・名前入力欄に""(何も表示していなかったり)、" " "," "."(スペースと,と.)のみで構成された名前はチャット画面に入れない
・また入室メンバー名と同じ名前ではチャット画面に入れない
・クッキーの発行はチャットの設定のクッキーはチャット画面に入れなかった場合発行
・モード判定のクッキーはチャット画面に入れる時に発行
・30秒、1分、3分、5分でページの自動更新を設定できるようにしてあるため、モード判定のクッキーはそれぞれ30秒、1分、3分、5分たったら自動的に消えるように時間を設定
●チャット画面
・チャット画面に入った直後のみ、メンバー名(IPとリモートホストも同時に)のファイルに記録
・もちろん入った直後はメンバー名のファイルに書いたとしてもそのままでは画面に反映しないので、入力された内容を表示して問題無いようにする
・退室ボタンを押した時に退室画面にいける
・30秒、1分、3分、5分でページの自動更新を設定できるようにしてあるため、モード判定のクッキーはそれぞれ30秒、1分、3分、5分たったら自動的に消えるように時間を設定
・自動更新したらその都度30秒、1分、3分、5分たったら自動的に消えるようクッキーを発行する
・チャットの設定のクッキーは発言されるたびに再取得する。(珠樹つなぎ式)
●退室画面
・チャットの設定のクッキーを発行しないためそのままの状態で残す
・モードの判定のクッキーは即座に消えるよう設定
・メンバー名の書かれたファイルから入室者のメンバー名(IPとリモートホストも)を消す
という処理をしています。
ユーザーがチャットを終える時に退室画面に行ってくれれば私としては問題がなくてラッキーなのですが、退室画面に行ってくれずにページを閉じちゃってチャットを終えられたら2つ問題があります。
■問題1
チャット画面で退室されずにページを閉じた直後、すぐさまページを開くとチャット画面から開始してしまうバグ
・珠樹つなぎの形で自動更新を持続させてるため当然なのですが、ページを閉じたらモード指定のクッキーを消す方法
・もしくは、最初にページを見られた時にモード指定のクッキーを消す方法
・もしくは、それ以外でページを閉じたら入室画面にいけて、自動更新した時はチャット画面にいける方法
はないでしょうか?
■問題2
チャット画面で退室されずにページを閉じられたら、メンバー名がいつまでも残ってしまうバグ
・1分毎にメンバーがチャット画面にいるかいないか判定する方法(一定期間たっても発言しなかったらチャットにいないと判定されないようにする)
・もしくはページを閉じたら、メンバー名のかかれたファイルから即座にメンバー名を消す方法
・もしくはそれ以外でページを閉じたら、メンバー名のかかれたファイルからメンバー名を消す方法
はないでしょうか?
この2つのバグを何とかできたら基本のチャットシステムは完成なので(残りは面しろ機能をどんどん追加するだけ・・・っと言うよりはさっさと次のプログラムを作った方がいい気もするけれど)是非教えてくださいませ。
(また新たなバグが見つかったら対処しないといけませんが)
それとチャットを今まで作った感想ですが、ただのチャットを作るのにもいろんな処理を施す事が分かりました。
機能を一つ追加するだけでも結構勉強になりますしね。
まともなチャットを一つでも作ることはプログラムの勉強に大いに役立つと思います。
いろいろ考えないと思った物が出来ませんしね。
お礼
丁寧なご回答、ありがとうございます。 HP担当者からの要望で、是非にとのことだったのですが、妥協が必要なようですね。 待機時の自動更新もありますし、それで納得してもらいます。 何度もありがとうございました。