This commit is contained in:
Master
2023-10-11 19:39:08 +02:00
6 changed files with 807 additions and 477 deletions

View File

@@ -8,6 +8,7 @@
<ItemGroup>
<PackageReference Include="MessagePack" Version="2.5.129" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
<ItemGroup>

View File

@@ -1,6 +1,6 @@
using AscNet.Common.MsgPack;
using MessagePack;
using static AscNet.GameServer.Packet;
using Newtonsoft.Json;
namespace AscNet.GameServer.Handlers
{
@@ -9,7 +9,6 @@ namespace AscNet.GameServer.Handlers
[PacketHandler("HandshakeRequest")]
public static void HandshakeRequestHandler(Session session, byte[] packet)
{
HandshakeRequest request = MessagePackSerializer.Deserialize<HandshakeRequest>(packet);
HandshakeResponse response = new()
{
Code = 0,
@@ -23,13 +22,17 @@ namespace AscNet.GameServer.Handlers
[PacketHandler("LoginRequest")]
public static void LoginRequestHandler(Session session, byte[] packet)
{
LoginRequest request = MessagePackSerializer.Deserialize<LoginRequest>(packet);
session.SendResponse(new LoginResponse
{
Code = 0,
ReconnectToken = "eeeeeeeeeeeeeeh",
UtcOffset = 0,
UtcServerTime = (uint)DateTime.UtcNow.Ticks
UtcServerTime = (uint)DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
});
NotifyLogin notifyLogin = JsonConvert.DeserializeObject<NotifyLogin>(File.ReadAllText("Data/NotifyLogin.json"))!;
session.SendPush(notifyLogin);
}
}
}

View File

@@ -68,24 +68,35 @@ namespace AscNet.GameServer
foreach (var packet in packets)
{
switch (packet.Type)
byte[] debugContent = packet.Content;
try
{
case Packet.ContentType.Request:
Packet.Request request = MessagePackSerializer.Deserialize<Packet.Request>(packet.Content);
c.Log(request.Name);
PacketFactory.GetPacketHandler(request.Name)?.Invoke(this, request.Content);
break;
case Packet.ContentType.Push:
Packet.Push push = MessagePackSerializer.Deserialize<Packet.Push>(packet.Content);
c.Log(push.Name);
PacketFactory.GetPacketHandler(push.Name)?.Invoke(this, push.Content);
break;
case Packet.ContentType.Exception:
Packet.Exception exception = MessagePackSerializer.Deserialize<Packet.Exception>(packet.Content);
c.Error($"Exception packet received: {exception.Code}, {exception.Message}");
break;
default:
break;
switch (packet.Type)
{
case Packet.ContentType.Request:
Packet.Request request = MessagePackSerializer.Deserialize<Packet.Request>(packet.Content);
c.Log(request.Name);
debugContent = request.Content;
PacketFactory.GetPacketHandler(request.Name)?.Invoke(this, request.Content);
break;
case Packet.ContentType.Push:
Packet.Push push = MessagePackSerializer.Deserialize<Packet.Push>(packet.Content);
c.Log(push.Name);
debugContent = push.Content;
PacketFactory.GetPacketHandler(push.Name)?.Invoke(this, push.Content);
break;
case Packet.ContentType.Exception:
Packet.Exception exception = MessagePackSerializer.Deserialize<Packet.Exception>(packet.Content);
c.Error($"Exception packet received: {exception.Code}, {exception.Message}");
break;
default:
c.Error($"Unknown packet received: {packet}");
break;
}
}
catch (Exception ex)
{
c.Error("Failed to invoke handler: " + ex.Message + $", Raw {packet.Type} packet: " + BitConverter.ToString(debugContent).Replace("-", ""));
}
}
}