Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
        }