2012-10-23 4 views
16

node.jssocket.io을 사용하여 실시간 웹 응용 프로그램을 만듭니다. 수동 연결 해제 및 (다시) 연결과 같은 소켓 연결을 사용자가 완전히 제어 할 수 있도록합니다.Socket.io - 클라이언트 측 연결 해제 후 수동 재 연결

function socket_connect() 
{ 
    console.log('func socket_connect'); 
    socket = io.connect('http://url/to/the/app'); 
} 

function socket_reconnect() 
{ 
    console.log('func socket_reconnect'); 
    socket_connect(); 
} 

function socket_disconnect() 
{ 
    console.log('func socket_disconnect'); 
    if (socket) socket.disconnect(); 
} 

클라이언트에서 socket_connect() 기능을 시작하는 것은 잘 작동하지만 socket.disconnect() 사용 후, 새로운 연결이 시작되지 않습니다.

+1

"새로운 연결이 시작되지 않았습니다"는 의미는 무엇입니까? 그것은 자동으로 다시 연결되지 않거나 사용자가 socket_connect()를 선택하면 새 연결이 작동하지 않습니다. – Martin

+0

자동 재 연결은 정상적으로 작동하지만 문제는 아닙니다. 내 대답을보십시오 ... 문제가 해결되었습니다. – acc

답변

15

그것은() socket.socket.reconnect을 현재

function socket_connect() 
{ 
    console.log('func socket_connect'); 
    socket = io.connect('http://url/to/the/app'); 
} 

function socket_reconnect() 
{ 
    console.log('func socket_reconnect'); 
    socket.socket.reconnect(); 
} 

function socket_disconnect() 
{ 
    console.log('func socket_disconnect'); 
    if (socket) socket.disconnect(); 
} 

관련 연구 : https://github.com/LearnBoost/socket.io-client/issues/251

16

당신이 Socket.io 1.0을 사용하는 경우, 처리하기 위해 소켓의 io 관리자를 사용하여 시도 수동 연결 해제 및 재 연결

// Connect to socket.io 
var socket = io.connect('url'); 

function manual_disconnect() { 
    socket.io.disconnect(); 
} 

function manual_reconnect() { 
    socket.io.reconnect(); 
} 

reconnecting_attempt는 소켓에 다시 연결 및 연결 이벤트는 모두 이후에 방출해야 다시 연결.

+2

irritatingly socket.dreconnect()는 1.x에서 사용할 수 있지만 socket.reconnect()는 사용할 수 없습니다. 따라서 kmftzg의 버전이 가장 좋습니다. –

16

클라이언트 측 구성에 따라 다시 연결할 수 있습니다.

// for socket.io version 1.0 
io.connect(SERVER_IP,{'forceNew':true }); 
관련 문제