2014-01-08 4 views
0

Я пишу класс сокета, и он должен выпустить событие socketConnected, когда сокет подключен. Для этого я сделал это.Реализация eventEmitter в моем собственном классе в nodejs

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 от Util.)

ответ

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

Смежные вопросы