2012-06-19 2 views
4

나는 게임을 만들기 위해 node.js와 socket.io를 사용하고 있습니다.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(); 




} 

답변

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()를 다시 호출해야합니다.

관련 문제