2013-11-25 2 views
1

콜백 메커니즘을 사용하여 데이터를 얻기 위해 클라이언트 측에서 호출되는 socket.on 이벤트 아래에 작성된 특정 코드 행이 있습니다.
두 개의 socket.on 이벤트 사이에서 통신하고 동일한 서버 및 동일한 파일 내에서 콜백을 사용하여 데이터를 교환 할 수 있습니까?Socket.IO : 동일한 서버에서 socket.on() 이벤트간에 데이터를 교환/교환하는 방법은 무엇입니까?

에 해당. 예 : 클라이언트와 서버 사이의 정상적인 흐름 :

socket.emit('init',data,function(callbackFromServer)) //from client 
      | ^
      |  | server respond through callback to client 
      V  | 
socket.on('init',function(data, callback){/*....*/}); // to server 

나는 같은 경우를 구현하고자하지만,이 socket.on() 이벤트와 서버 자체 내에서 데이터를 교환 할 수 있습니다. 예 :

어떤 방법으로도이를 달성 할 수 있습니까?

답변

1

서버 쪽에서 다른 소켓 io 클라이언트를 만든 다음 해당 클라이언트를 사용하여 함수를 호출하십시오.

var socket = io.connect('http://localhost:port'); 
socket.on('connect', function() { 
    socket.emit('another function', { param1: 'value1' }); 
}); 
3

나는 완전히 사용 사례를 이해할 수 있는지 확실하지 않습니다,하지만 당신은 단지 다른 함수를 호출 할 경우, 당신은 왜 그 기능을 참조하는 변수를 사용하지 않는? 언제든지 전화 할 수 있습니다. 여전히이 socket.on 이벤트를 호출 할 수 있도록하면서

var someEventFn = function(data, callback1) { 
     initFn(data, function(result) { 
      // here you have the result from the init method 
     }); 
    }, 
    initFn = function(data, callback2) { 
     // some js 
    }; 

socket.on('someEvent', someEventFn); 
socket.on('init', initFn); 

그럼 당신은 someEventFn 내부에서 initFn를 호출 할 수 있습니다. 나는 당신의 질문을 정확하게 이해 했습니까?

관련 문제