4

ゲームの構築にnode.jsとsocket.ioを使用しています。

私は以下のようなコードを持っています。ゲームはシンプルです。サーバーに接続するとすぐにアニメーションを開始し、アニメーションを続けます。

インターネット接続がダウンしたり、サーバーが切断されたりした場合にゲームが正常に失敗することを確認したいと思います。接続が回復するとゲームが再開します。

animate関数は、サーバーからコンテンツをフェッチします。したがって、接続がない場合は正しく機能しません。接続がある場合にのみアニメーション関数を実行したい。

そこで、接続のステータスを保持することになっている、connectedという変数を導入しました。conncted = falseの場合、アニメーションを停止します。

しかし、今の問題は、socket.io自体が数回再接続を試みることです。再接続プロセス中に、接続をfalseに設定するにはどうすればよいですか?

Game.js

var connected = false;

$(document).ready(function(){

//connect to socket server



socket = io.connect('/gameserver');



socket.on('connect', function() {
    connected = true;
    animate();


});

socket.on('disconnect', function() {
    connected = false;
 socket.connect();

});



});


function animate()

{

....
......
........

if (( connected ) && (..... )) animate();




}
4

1 に答える 1

2

次の組み込み関数を使用して、接続のステータスを把握し、それに応じてアニメーションのステータスを定義できます。

socket.on('disconnect', function(){}); // wait for reconnect, hold animation
socket.on('reconnect', function(){}); // connection restored, restart animation  
socket.on('reconnecting', function( nextRetry ){}); //trying to reconnect, hold animation
socket.on('reconnect_failed', function(){ message("Reconnect Failed"); });// end animation

nextRetry は、ユーザーの状態を更新するのに役立つ場合に、接続を試行するまでの時間を指定します。

さらに、サーバーからの切断時に、socket.connect() を呼び出す必要はありません。更新されたステータスは、socket.on('reconnect') から入手できます。したがって、ここにアニメーションへの呼び出しを含めるだけです。

クライアントから socket.disconnect が呼び出された場合のみ、接続が自動的に復元されないため、socket.connect() を再度呼び出す必要があります。

于 2012-06-19T07:21:32.240 に答える