2014-01-08 2 views
0

소켓 클래스를 쓰고 있는데 소켓이 연결될 때 'socketConnected'이벤트가 발생해야합니다.nodejs 내 자신의 클래스에서 eventEmitter 구현

Socket.prototype.connectEmitter = function(client){ 
    console.log("Connected"); 
    console.log(client); 
    this.emit('socketConnected',client); 
} 


    Socket.prototype.connect = function(){ 
    var client = net.connect({port:this.remotePort, host:this.remoteIp},function(){  
     this.connectEmitter(client); 
    }); 
    client.on('data',this.dataEmitter); 
    client.on('end',function(){ 
     console.log("Reading End"); 
    }); 
} 

그러나이 코드를 실행하면 소켓 객체에는 connectEmitter 메서드가 없다는 메시지가 표시됩니다. 는 어디에서 잘못하고 있어요 (내가 여기에 전체 코드를 게시하지 않은 내가 폴더의 유틸리티에서 eventemitter을 상속.) 세부 사항에 대한

답변

2

확실하지 있지만 :.

var client = net.connect({port:this.remotePort, host:this.remoteIp},function(){  
    this.connectEmitter(client); 
}); 

"이"이 경우 기대하지 않았던 것처럼 이것은 아닙니다. 이는 콜백 함수 내에서 사용되기 때문입니다.

내가 "이"이 경우 내 기대대로되지 몰랐습니다

var instance = this; 
var client = net.connect({port:this.remotePort, host:this.remoteIp},function(){  
    instance.connectEmitter(client); 
}); 

관련

+0

를 사용하려고합니다. 고맙습니다. 매우 감사 – bring2dip

관련 문제