0

webapp2Web フレームワークを使用して GAE で Web アプリケーションを開発しています。これは、ゲームの複数のインスタンスが同時にプレイされる 2 人用のゲームです。サーバーは、2 台のコンピューター間でゲーム プレイ データを通信し、データを検証するためのパスとして機能します。クライアントは、HTTP 要求のみによってサーバーと通信します。

これを行うために、ユーザーの IP アドレス、userId (Cookie を使用)、およびユーザー名 (ユーザーがサインアップしている場合) と、ユーザーがプレイしているゲーム インスタンスのアドレスを格納するテーブルを作成します。

ゲームが終了するまで (どちらかのプレイヤーが勝つ) テ​​ーブルのエントリを削除することはありませんが、ゲームが終了する前に一方 (または両方) のプレイヤーが切断された場合、またはネットワーク エラーが原因でいずれか (または両方)プレーヤーの終了します。

テーブルからエントリを削除し、対戦相手が移動するのをまだ待っているプレーヤーに通知できるように、ゲームがアクティブでなくなったことをどのように知ることができますか?

4

1 に答える 1

0

あなたはできる:

  • last_action = DateTimeProperty(auto_now=true)ユーザーモデルに a を追加します
  • ended = DateTimeProperty()ゲームモデルに を追加します
  • を持つすべてのユーザーを検索するメソッドを作成し、このユーザーを持つすべてのゲームlast_action < now - x minutesのプロパティを今に設定しますended
  • y 分後に終了したすべてのゲームを削除するメソッドを作成する
  • タスクとcronを介して定期的にこのメソッドを実行します

ただし、クライアントが JavaScript を実行できる場合は、channel serviceを確認してください。

于 2013-10-17T18:29:04.530 に答える