【发布时间】:2013-10-05 13:45:41
【问题描述】:
我正在尝试在 Node.js 上创建一个类似客户端的 TCP 套接字,并使其连接到服务器:
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: 无法调用未定义的“写入”方法
从创建连接时使用的函数可以看出,它正在识别主机并进行连接。 那为什么我不能用socket发送数据呢?
编辑:这个问题已经解决了,但是有一个新问题...
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.
});
有什么办法可以处理socket所属的对象吗?
recvHHCPmsg() 函数是这样定义的:
User.prototype.recvHHCPmsg =
function(text)
{
if (text == 'disconnect')
{
this.socket.write('disconnect');
this.socket.end();
this.socket.destroy();
}
};
【问题讨论】:
-
this不是你想的那样。 -
我在一个对象使用的函数中执行此操作。
-
@hammereditor 请检查我的回答,如果有帮助,请点赞并接受。 meta.stackexchange.com/a/5235/235416
-
User与socket有什么关系?
标签: javascript node.js sockets typeerror