/* 文件名:Socket.nut 路径:User/Socket/Socket.nut 创建日期:2024-12-01 14:47 文件用途:网络通信 */ class MySocket extends Socket { //字符串包处理逻辑 PackHandler = null; //数据流包处理逻辑 PackBinaryHandler = null; State = 0; constructor(Ip, Port) { //初始化处理逻辑Map PackHandler = {}; PackBinaryHandler = {}; //先执行父类的构造函数 base.constructor(); //绑定回调函数 BindFunc(SOCKET_CALLBACK_TYPE.onConnect, function() { State = 1; }.bindenv(this)); BindFunc(SOCKET_CALLBACK_TYPE.onReceive, function(PacketId, Str) { //如果存在对应处理逻辑 if (PackHandler.rawin(PacketId)) { //将字符画序列化json local Jso = Json.Decode(Str); PackHandler[PacketId](Jso); } }.bindenv(this)); BindFunc(SOCKET_CALLBACK_TYPE.onReceiveBinary, function(PacketId, Blob_Obj) { //如果存在对应处理逻辑 if (PackBinaryHandler.rawin(PacketId)) { PackBinaryHandler[PacketId](Blob_Obj); } }.bindenv(this)); Connect(Ip, Port, false); //注册自己到全局 getroottable()._MySocket_ <- this; } //注册字符串包处理逻辑 function RegisterHandler(PacketId, Func) { getroottable()._MySocket_.PackHandler.rawset(PacketId, Func); } //注册数据流包处理逻辑 function RegisterBinaryHandler(PacketId, Func) { getroottable()._MySocket_.PackBinaryHandler.rawset(PacketId, Func); } //发包 function Send(PacketId, Jso) { //将json序列化字符串 local Str = Json.Encode(Jso); Socket_SendPacket(getroottable()._MySocket_.Client, PacketId, Str); } }