2012-05-02 6 views
0

私はマルチプレイヤーボードゲームを開発しています。ユーザーは空の部屋に入り、他の誰かが参加して再生を開始するのを待ちます。 最初の演奏が空いている部屋に参加するとき、問題は直面しています。部屋は空で、彼の名前はマイケルとして表示されています。 2番目のプレーヤー(Peter)が別のブラウザーからルームに参加すると、MichaelがPlayer1、プレーヤー2と表示されます。マイケルのブラウザを表示させるにはどうすればいいですか(ピーターは部屋に入っています)。私はjquery setIntervalを使用することを考えていますが、私は一貫してサーバーを呼び出すので、効率的ではありません。助言がありますか? 例:Michaelはwww.board.com/game=1に行き、誰かが参加するのを待ちます Peterはwww.board.com/game=1に行き、彼は参加します。 Petersのブラウザでは彼は部屋の中でMicaelを見ることができます。しかし、MICHAELSのブラウザでは彼は見ることができません。誰かが部屋に入室した場合、マイケルにどのように通知することができますか? jQueryのsetintervalは解決策ですか?それは効率的ではありませんか?ユーザーが部屋に入ったときにjquery PHPのロード

答えて

0

HTTPの性質上、には届かず、サーバーからリロード(またはロード情報)することはできません。彼が望むときはいつでも、ブラウザーだけがサーバーからのコンテンツにアクセスできます。それがなぜ(ページをリロードしたくないのか)唯一のオプションがjQueryを使用し、短い間隔でサーバーを呼び出す理由です。

+0

効率的ではありません。これはヤフーゲームの仕組みですか?それはサーバーでチェックし続けますか? – user1349526

0

結果があなたのニーズに合っていない場合は、ajaxリクエストを行い、同じリクエストを再度行うことができます。おそらくwindow.setTimeout( "method()"、1000);

+0

私はPHPでソケットを使用する必要があると思います。 – user1349526

+0

ページをリロードしたり、javascript ajax呼び出しを使用したりせずにサイトのコンテンツを変更することはできません。 window.setTimeoutを使用すると、サーバから結果を処理するたびに別の間隔を実行するかどうかを決めることができます。なぜなら、あなたがそれを必要としなくても間隔が再び実行されないからです。 – user1266222

+0

は 'window.setTimeout(function() ' – RGB

2

ブラウザからWebソケットを開くことができ...

http://www.websocket.org/

が、それ以外、あなたはregularily data..iは、PHPファイルを設定します更新取得するためにサーバーをポーリングする必要がありますあなたのインターフェイスの変更(ゲーム/チャットデータのみ)jqueryを使用して、jsonブロブを配信するには、そのPHPファイルにajax呼び出しを設定し、10〜20秒ごとに離れるようにします。データをポーリングしているだけでは、あまりにも多くのリソースを取ることはありません。

+0

私はまったく同じ問題(サーバー部分がPHPではなくGoにあることを除いて)を使ってオンラインボードゲームを作ったので、私は同意する:WebSocketsは非常に良いこの。しかし、私はWebSocketをPHPで動作させることを考えていません。 –

+0

あなたが私にバンプする必要があることに同意するならば! :) – RGB

+1

あなたが望むように...完了... ^^ –

0

HTTPはこのような状況では作成されませんでしたが、私は良いニュースがあり、インターネットは進化しています。 最初に、新しい、より良いが互換性の低いHTML5 WebSocketです。 また、Ajaxがあなたのページを更新したり、リクエストを送信してサーバーに応答があるまで開いたままにしておく「Comet programing」のようなテクニックを使用するという定期的な要求をしています。

関連する問題