protected override void OnSessionClosed(PlayerSession session, CloseReason reason) { base.OnSessionClosed(session, reason); if (!session.IsLogin) { return; } var package = new G2G_ToGameDisconnect() { Reason = reason.ToString() }; using (var ms = new MemoryStream()) { Serializer.Serialize(ms, package); var packageData = ms.ToArray(); var converter = EndianBitConverter.Big; byte[] sendData = new byte[packageData.Length + 4]; converter.CopyBytes((int)CMD_G2G.ToGameDisconnect, sendData, 0); Buffer.BlockCopy(packageData, 0, sendData, 4, packageData.Length); Push2GameServer(session, sendData); } PlayerSession savedSession; ManagedSessionByNetHandle.TryRemove(session.NetHandle, out savedSession); }
protected override void OnSessionClosed(PlayerSession session, CloseReason reason) { base.OnSessionClosed(session, reason); var package = new G2G_ToGameDisconnect() { Reason = reason.ToString() }; using (var ms = new MemoryStream()) { Serializer.Serialize(ms, package); var packageData = ms.ToArray(); var converter = EndianBitConverter.Big; byte[] sendData = new byte[packageData.Length + 4]; converter.CopyBytes((int)CMD_G2G.ToGameDisconnect, sendData, 0); Buffer.BlockCopy(packageData, 0, sendData, 4, packageData.Length); Push2GameServer(session, sendData); } #if Log Console.WriteLine("{0}:one session close", DateTime.Now); #endif }