private void OnReadPacket(byte[] data) { ReadPacket?.Invoke(this, data); }
public SocketReceiveEventArgs(SocketEventType socketEventType, SocketBehaviourType socketBehaviourType, ReadPacket readPacket) : base(socketEventType, socketBehaviourType) { ReadPacket = readPacket; }
private static void LGSHandlePacket(Socket s, byte[] data) { try { if (!s.Connected) { return; } ReadPacket packet = new ReadPacket(data, XCRYPT.LoginServerPrivkey); if (!packet.IsInitialized()) { return; } Header packet_header = packet.GetHeader(); byte[] packet_data = packet.GetBody(); byte packet_type = packet.GetPacketType(); switch (packet_type) { case 11: // version okay Console.WriteLine("LGS Version OK!"); SendData.SendLogin(s, LoginServer.Usuario, LoginServer.Password); break; case 23: // user and password incorrects Console.WriteLine("Usuario e senhadas incorretos!"); break; case 24: // password incorrect Console.WriteLine("Senha incorreta"); break; case 22: // login efetuado com sucesso, go go gms haha Console.WriteLine("Login realizado com sucesso!"); ParseLoginResponse(s, packet_data); byte[] EnterGMSPacket = { 0x02, 0x00, 0x2a, 0xa1, 0xd6 }; LGSSend(s, EnterGMSPacket); //SendData.EnterServer(s); break; case 28: // token lgs para autenticar no gms Console.WriteLine("Token GMS recebido!"); ParseTokenGMS(s, packet_data); LoginServer.s.Disconnect(false); LoginServer.s.Dispose(); GameManagerServer.Conn.GameManagerServer gms = new GameManagerServer.Conn.GameManagerServer(LoginServer.GMS_IP, LoginServer.GMS_PORT, LoginServer.id_idx, LoginServer.GMS_TOKEN, LoginServer.Usuario); break; } } catch { return; } }
//处理服务端消息 void onMessage(WebSocket ws, byte[] message) { ReadPacket rp = PacketFunc.CreateReadPacket(message); //包头 byte t = rp.ReadInt8(); if (t == MsgOutsideDef.MsgNull) { return; } //发送者ID,广播为0 long clientID = rp.ReadInt64(); switch (t) { case MsgOutsideDef.MsgPeer: //单播消息 short gameType = rp.ReadInt16(); foreach (Command cmd in responseCommands) { if (cmd.Type() == gameType) { cmd.Handle(this, rp); break; } } break; case MsgOutsideDef.MsgBroadcast: //广播消息 byte _ = rp.ReadInt8(); gameType = rp.ReadInt16(); foreach (Command cmd in responseCommands) { if (cmd.Type() == gameType) { cmd.Handle(this, rp); break; } } break; case MsgOutsideDef.MsgRoomJoin: //加入房间 long joinID = rp.ReadInt64(); bool canAdd = true; foreach (var id in ids) { if (id == joinID) { canAdd = false; break; } } if (canAdd) { ids.Add(joinID); if (statusCallBack != null) { statusCallBack(NetStatusType.Join, this, joinID); } } Debug.Log("Room join id: " + joinID.ToString()); break; case MsgOutsideDef.MsgRoomLeave: //离开房间 long leaveID = rp.ReadInt64(); ids.Remove(leaveID); if (statusCallBack != null) { statusCallBack(NetStatusType.Leave, this, leaveID); } Debug.Log("Room leave id: " + leaveID.ToString()); break; case MsgOutsideDef.MsgRoomIds: //获得房间ID列表 myID = rp.ReadInt64(); Debug.Log("myID: " + myID.ToString()); ids = new List <long>(); ids.Add(myID); long otherID; while ((otherID = rp.ReadInt64()) != 0) { ids.Add(otherID); } if (statusCallBack != null) { statusCallBack(NetStatusType.Ids, this); } Debug.Log("Room id count: " + ids.ToArray().Length.ToString()); break; } }
public void Action(long id, byte action, ReadPacket rp) { inputProxy.OnActionTriger(id, action, rp); }
public IAVIOContext AllocIOContext(ulong bufferSize, ReadPacket readPacket) { return(new AVIOContextWrapper(bufferSize, readPacket)); }
public void Handle(Agent agent, ReadPacket rp) { string msg = rp.ReadString(); Debug.Log(msg); }