マルチプレイヤーボードゲームを開発しています。どのユーザーが空の部屋に入り、他の誰かが参加してプレイを開始できるようになるのを待ちます。私が直面している問題は、最初のプレイが空の部屋に参加するときです。部屋は空で、彼の名前はマイケルと表示されています。2 番目のプレーヤー (Peter) が別のブラウザーからルームに参加すると、Michael が Player1 として、彼が Player2 としてリストされます。しかし、どうすれば Michael のブラウザを表示することができますか (Peter がルームに参加しました)。jquery setIntervalを使用することを考えていますが、一貫してサーバーを呼び出しているため、これは効率的ではありません。助言がありますか?例: Michael は www.board.com/game=1 にアクセスし、誰かが参加するのを待ちます。Peter は www.board.com/game=1 にアクセスし、参加します。ピーターのブラウザーでは、部屋にいるミカエルを見ることができます。しかし、MICHAELS ブラウザーでは、彼は見ることができません。誰かがルームに参加した場合にマイケルに通知するにはどうすればよいですか? jQuery setinterval は唯一の解決策ですか? 非効率じゃない?
4 に答える
ブラウザからWebソケットを開くことができます...
それ以外の場合は、サーバーを定期的にポーリングして更新されたデータを取得する必要があります..インターフェイスの変更(ゲーム/チャットデータのみ)を含むjson blobを配信するためにphpファイルをセットアップし、jqueryを使用して、それへのajax呼び出しをセットアップしますphp ファイルを 10 ~ 20 秒ごとにオフにします。データをポーリングするだけの場合は、あまり多くのリソースを必要としません..
HTTP の性質上、ユーザーのブラウザーを呼び出すことはできず、サーバーからブラウザーをリロード (または情報をロード) することはできません。ブラウザーだけが、いつでもサーバーからコンテンツにアクセスできます。そのため、唯一のオプション (ページをリロードしたくない場合) は、jQuery を使用し、短い間隔でサーバーを呼び出すことです。
結果がニーズに一致しない場合は、ajax リクエストを実行して、コールバックの横で同じリクエストを再度行うことができます。
HTTP はこの種の状況のために作られたものではありませんが、良いニュースがあります。インターネットは進化し、さまざまな方法でリアルタイム アプリケーションを実現できます。まず、HTML5 WebSocket は新しいほど優れていますが、互換性は低くなります。または、ページを更新するために定期的なリクエストを行う Ajax を使用するか、「コメット プログラミング」などの手法を使用してリクエストを送信し、サーバーが応答するまでそれらを開いたままにします。