using Fantasy.Async; using Fantasy.Network; using Fantasy.Network.Interface; // ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract namespace Fantasy; public sealed class C2G_ExitHandler : Message { protected override async FTask Run(Session session, C2G_Exit message) { var gateAccountFlagComponent = session.GetComponent(); if (gateAccountFlagComponent == null) { Log.Warning($"有用户不是通过正常途径访问到这个接口,IP:{session.RemoteEndPoint.ToString()}"); return; } Log.Debug($"用户名:{gateAccountFlagComponent.Account.Name} 退出游戏的协议。"); // 如果执行了这个session.Dispose,就会断开这个连接,这样的情况下,客户端也会断开。 session.Dispose(); await FTask.CompletedTask; } }