Esempio n. 1
0
        bool OnSystemPacket(FreeNet.Packet packet)
        {
            var session = packet.Owner;

            // active close를 위한 코딩.
            //   서버에서 종료하라고 연락이 왔는지 체크한다.
            //   만약 종료신호가 맞다면 disconnect를 호출하여 받은쪽에서 먼저 종료 요청을 보낸다.
            switch (packet.ProtocolId)
            {
            // 이 처리는 꼭 해줘야 한다.
            case FreeNet.NetworkDefine.SYS_NTF_CONNECTED:
                Console.WriteLine("SYS_NTF_CONNECTED : " + session.UniqueId);

                var user = new GameUser(session);
                UserList.TryAdd(session.UniqueId, user);
                return(true);

            // 이 처리는 꼭 해줘야 한다.
            case FreeNet.NetworkDefine.SYS_NTF_CLOSED:
                Console.WriteLine("SYS_NTF_CLOSED : " + session.UniqueId);
                //RefNetworkService.OnSessionClosed(session);
                UserList.TryRemove(session.UniqueId, out var temp);
                return(true);
            }

            return(false);
        }
        bool OnSystemPacket(FreeNet.Packet packet)
        {
            var session = packet.Owner;

            // active close를 위한 코딩.
            //   서버에서 종료하라고 연락이 왔는지 체크한다.
            //   만약 종료신호가 맞다면 disconnect를 호출하여 받은쪽에서 먼저 종료 요청을 보낸다.
            switch (packet.ProtocolId)
            {
            // 이 처리는 꼭 해줘야 한다.
            case FreeNet.NetworkDefine.SYS_NTF_CONNECTED:
                Console.WriteLine("SYS_NTF_CONNECTED : " + session.UniqueId);

                var user = new GameUser(session);
                UserList.TryAdd(session.UniqueId, user);
                return(true);

            // 이 처리는 꼭 해줘야 한다.
            case FreeNet.NetworkDefine.SYS_NTF_CLOSED:
                Console.WriteLine("SYS_NTF_CLOSED : " + session.UniqueId);
                //RefNetworkService.OnSessionClosed(session);
                UserList.TryRemove(session.UniqueId, out var temp);
                return(true);


            case FreeNet.NetworkDefine.SYS_START_HEARTBEAT:
                // 순서대로 파싱해야 하므로 프로토콜 아이디는 버린다.
                packet.PopProtocolId();
                // 전송 인터벌.
                byte interval = packet.PopByte();

                session.StartHeartbeat(interval);
                return(true);

            case FreeNet.NetworkDefine.SYS_UPDATE_HEARTBEAT:
                Console.WriteLine("heartbeat : " + DateTime.Now);

                session.LatestHeartbeatTime = DateTime.Now.Ticks;
                return(true);
            }

            return(false);
        }