0

我正在编写一个套接字类,它应该在套接字连接时发出“socketConnected”事件。为此,我已经这样做了。

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 方法。我在哪里做错了。(我没有在这里发布整个代码。我从 util 继承了 eventemitter)

4

1 回答 1

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);
});

问候

于 2014-01-08T06:47:34.670 回答