[성현모] Config 기능 추가, Socket Recv Json, string 기능 분리

This commit is contained in:
SHM
2025-04-21 12:00:24 +09:00
parent a12a3949bf
commit aaf104a915
21 changed files with 550 additions and 156 deletions

View File

@ -13,31 +13,37 @@ namespace HubX.Library.Socket.Packet
public class PacketHandler
{
public static void C2S_INSERT_UniqueKeyHandler(PacketSession session, IMessage packet)
{
C2S_INSERT_UniqueKey movePacket = packet as C2S_INSERT_UniqueKey;
ClientSession clientSession = session as ClientSession;
public static void C2S_INSERT_UniqueKeyHandler(PacketSession session, ArraySegment<byte> buffer)
{
var recvData = Encoding.UTF8.GetString(buffer);
//convert to object
var jsonObject = recvData.ToObject<C2S_INSERT_UniqueKey>();
if (jsonObject == null)
{
var recvDataList = recvData.Split(",");
jsonObject = new C2S_INSERT_UniqueKey
{
Identity = recvDataList[0],
Data1 = recvDataList[1],
Data2 = recvDataList[2],
Data3 = recvDataList[3],
Data4 = recvDataList[4],
Data5 = recvDataList[5],
};
}
//insert DB
if(jsonObject != null)
{
}
ClientSession clientSession = session as ClientSession;
Client client = clientSession.Client;
if (client == null)
return;
}
public static void C_SkillHandler(PacketSession session, IMessage packet)
{
//C_Skill skillPacket = packet as C_Skill;
//ClientSession clientSession = session as ClientSession;
//Player player = clientSession.MyPlayer;
//if (player == null)
// return;
//GameRoom room = player.Room;
//if (room == null)
// return;
//room.Push(room.HandleSkill, player, skillPacket);
}
}
}

View File

@ -12,12 +12,12 @@ namespace HubX.Library.Socket.Packet
public class C2S : IMessage
{
public EnumMessageId MessageId { get; set; }
// public EnumMessageId MessageId { get; set; }
}
public class S2C : IMessage
{
public EnumMessageId MessageId { get; set; }
// public EnumMessageId MessageId { get; set; }
public EnumMessageResult Result { get; set; }
}

View File

@ -20,9 +20,9 @@ namespace HubX.Library.Socket.Packet
}
Dictionary<ushort, Action<PacketSession, ArraySegment<byte>, ushort>> _onRecv = new Dictionary<ushort, Action<PacketSession, ArraySegment<byte>, ushort>>();
Dictionary<ushort, Action<PacketSession, IMessage>> _handler = new Dictionary<ushort, Action<PacketSession, IMessage>>();
Dictionary<ushort, Action<PacketSession, ArraySegment<byte>>> _handler = new Dictionary<ushort, Action<PacketSession, ArraySegment<byte>>>();
public Action<PacketSession, IMessage, ushort> CustomHandler { get; set; }
public Action<PacketSession, ArraySegment<byte>, ushort> CustomHandler { get; set; }
public void Register()
{
@ -39,31 +39,34 @@ namespace HubX.Library.Socket.Packet
ushort id = BitConverter.ToUInt16(buffer.Array, buffer.Offset + count);
count += 2;
Action<PacketSession, ArraySegment<byte>, ushort> action = null;
if (_onRecv.TryGetValue(id, out action))
action.Invoke(session, buffer, id);
ushort packetSize = (ushort)(buffer.Count - count);
byte[] packet = new byte[packetSize];
Array.Copy(buffer.ToArray(), count, packet, 0, packetSize);
if (_onRecv.TryGetValue(id, out var action))
action.Invoke(session, packet, id);
}
void MakePacket<T>(PacketSession session, ArraySegment<byte> buffer, ushort id) where T : IMessage, new()
void MakePacket<T>(PacketSession session, ArraySegment<byte> buffer, ushort id) where T : new()
{
T pkt = new T();
// T pkt = new T();
//pkt.MergeFrom(buffer.Array, buffer.Offset + 4, buffer.Count - 4);
if (CustomHandler != null)
{
CustomHandler.Invoke(session, pkt, id);
CustomHandler.Invoke(session, buffer, id);
}
else
{
Action<PacketSession, IMessage> action = null;
Action<PacketSession, ArraySegment<byte>> action = null;
if (_handler.TryGetValue(id, out action))
action.Invoke(session, pkt);
action.Invoke(session, buffer);
}
}
public Action<PacketSession, IMessage> GetPacketHandler(ushort id)
public Action<PacketSession, ArraySegment<byte>> GetPacketHandler(ushort id)
{
Action<PacketSession, IMessage> action = null;
Action<PacketSession, ArraySegment<byte>> action = null;
if (_handler.TryGetValue(id, out action))
return action;
return null;