0

私は PHP と MySQL (および CodeIgniter) のビデオ/チャット プログラムを作成しています。これは、 1)現在のオンライン ユーザーを表示し、2)モデレーターが退席したときにすべてのユーザーを強制的に切断します。

ただし、HTTP はステートレスです。上記の機能を実装するための最良の方法は何ですか?

現在の状態を判断するには、各ユーザーに対してハートビート AJAX 要求を使用する必要がありますか? ユーザー (モデレーターなど) が切断された場合、どうすればわかりますか?

4

2 に答える 2

1

HTTPの状態ロジックを使わなくても実装できると思います。現在の会話状態をデータベースに保存する必要があります。すべてのユーザーリクエストには、認証されたユーザー名Cookieと会話IDがあり、バックエンドDBからセッションをプルするために使用されます。また、モデレーターが存在するかどうかをチェックする変数があります(ハートビットスタイルチェック)。モデレーターが退会したら、セッションの状態を変更するだけで、他のすべてのユーザーがログアウトできます。私が提案したステップの詳細が必要な場合はお知らせください。

于 2012-08-01T06:14:48.623 に答える
1

これには、ほぼリアルタイムの実装が必要です。すべてのルーム / チャット セッションが作成されたテーブルを作成できます。次に、ユーザー テーブルにモデレーター列と現在のルーム ID 列を含めることができます。

客室表

列: ID、USER_ID、CREATED_AT、UPDATED_AT、NAME、PASSWORD、HAS_MODERATOR (bool) ....

モデレーターがルームに参加すると、「HAS_MODERATOR」フィールドを true または 1 に更新できます。次に、PHP ページまたはルートに ajax リクエストを送信して true または値を返す単純なロングポーリング スクリプトを作成できます。間違い。true が返された場合、モデレーターはまだルームにいます。それ以外の場合は、ルームを閉じて、javascript などを介して強制的にリダイレクトできます。PHP スクリプトは、has_moderator が true かどうかを単純にチェックし、さらにユーザー テーブルを調べて、すべてのモデレーターを取得し、彼らがいるルームを確認します。モデレーターが現在いるルームと、チェックしているルームを一致させます。これにより、モデレーターが会議室にいることが保証されます。

バックグラウンド PHP が完了したことを Ajax/Javascript に通知する

于 2012-08-01T02:32:48.443 に答える