2011-10-28 4 views
0

저는 nodeJS와 Socket.IO가 새롭고 문제가 발생했습니다.Socket.IO 핸들러에서 이벤트 유형 감지

Socket.IO 처리기 내부에서 이벤트 유형을 알 수있는 방법이 있습니까? 나는 이런 종류의 코드를 가지고있다 :

// Fire the appropriate callback when we receive a message 
// that.received is an array of callback functions 
for (var event in that.received) { 
    socket.on(event, function(message) { 
     // Of course, this won't work because of "event" scope 
     that.received[event](message, this); 
    }); 
} 

그래서 내가 알고 싶은 것은 내 처리기를 트리거 한 "이벤트"의 실제 값이다. Chrome 개발자 도구를 사용하여 사용 가능한 변수를 검사하려고했지만 아무 것도 찾을 수 없었습니다.

여러 소켓 (폴백 서버에 대해 긴 storty)을 처리하기 위해 Socket.IO 주변에서 일종의 래퍼 클래스를 작성하기 때문에이 작업을 수행해야합니다. 내 처리기를 전달할 정도로 충분히 일반화되기를 바랍니다.

아이디어가 있으십니까?

+0

[자바 스크립트 클로저 내부 루프 - 간단한 실제 예] (http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – pimvdb

+0

좋은 해결책, 나는 내가 찾지 못하면 불필요한 문제가 생겼다. 감사합니다. 왜 그런 생각을하지 않았는지 모르겠습니다. – PJP

답변

2

OK, 바보 같은 질문입니다.

난 그냥이 작업을 수행 할 필요가 : 나는 "이"단지 바보 같은 내 콜백 함수에 전달 된

// Fire the appropriate callback when we receive a message 
for (var event in that.received) { 
    socket.on(event, that.received[event]); 
} 

.

function myCallback(message, socket) { 
    // Some code... 
    socket.emit('ack', message.id); 
    // Some code... 
} 

을하지만 내가해야 할 일은 이것이다 : 내 콜백이처럼 보였다

function myCallback(message) { 
    // Some code... 
    this.emit('ack', message.id); 
    // Some code... 
} 

그래서 난 더 이상 범위의 문제가 없습니다.

관련 문제