Я пытаюсь сделать клиент, как TCP сокет на Node.js, и делаю его подключение к серверу:Невозможно вызвать метод «писать» неопределенной
this.socket = new net.Socket();
this.socket.setEncoding('UTF8');
this.socket.on('data', function(data)
{
this.recvHHCPmsg(data);
});
this.socket.connect(9000, '192.198.94.227', function()
{
//called when connection is created
var loginCmd = 'login' + wSym + user + wSym + pass;
console.log("Connected to HHCP server.");
this.socket.write(loginCmd, 'UTF8', function(){ console.log('Data sent.'); });
});
Но я получаю эту ошибку (на «this.socket.write» линия):
TypeError: Невозможно вызвать метод «писать» неопределенной
от функции, используемой при создании соединения, я могу сказать, что оно распознает хозяина и соединения. Так почему я не могу отправить данные с помощью сокета?
EDIT: Эта проблема была решена, но есть новый один ...
Okay, but I need code inside the call-back function to be able to access the object which 'owns' the socket object:
this.socket.on('data', function(data) //'this' is referring to the 'User' object
{
this.recvHHCPmsg(data); //'this' is referring to the socket.
//The 'User' object has a method called 'recvHHCPmsg'.
//I want to call that function from within this call-back function.
});
Есть ли способ сделать что-то с объектом, что гнездо принадлежит?
Это как определяется функция recvHHCPmsg():
User.prototype.recvHHCPmsg =
function(text)
{
if (text == 'disconnect')
{
this.socket.write('disconnect');
this.socket.end();
this.socket.destroy();
}
};
'this' не то, что вы думаете. – SLaks
Я делаю это внутри функции, которую использует объект. – hammereditor
Возможный дубликат [Javascript callbacks lose this this]] (http://stackoverflow.com/questions/10766407/javascript-callbacks-losing-this) – Quentin