我正在使用 Node.JS 构建服务器/客户端模型,并希望通过使用可变数据包 ID 来调用已经实例化的类的函数,并通过不同的函数处理传入的服务器数据包。因此,我将数据包 ID 作为PacketMethods
对象的属性,将要调用的函数作为每个数据包 ID 属性的值。然而,在这个例子中,当ServerList()
被调用时,它不是启动Client
类的成员,因此this.socket
是未定义的。
我怎样才能调用数据包处理函数,使它们成为的成员Client
?
function Client (...)
{
this.socket = new net.Socket();
...
}
Client.prototype.HandlePacket = function(blocks)
{
try {
var sPacket = new WRPacket(blocks);
var PacketMethods = {
4352 : this.ServerList
4351 : this.LoginResponse
}
if(PacketMethods.hasOwnProperty(sPacket._packetid))
PacketMethods[sPacket._packetid](sPacket);
else
console.log('Unhandled Packet: '+sPacket._packetid);
} catch(err) {
console.log("Error at Packet-Handler:\n"+err);
}
}
Client.prototype.ServerList = function(Packet)
{
console.log('Serverlist received ...');
...
this.socket.end();
}
谢谢!