コード例 #1
0
        private void Login()
        {
            lclient = new ServerUtility.RequestClient(host, port);
            lclient.UseSendThreadUpdate = true;

            lclient.OnConnectCompleted = (s, e) =>
            {
                if (e.Success)
                {
                    var login = lclient.CreateRequest <C2L_Login, L2C_Login>();
                    login.RequestMessage.Password = pwd;
                    login.RequestMessage.UserName = userName;
                    login.RequestMessage.Version  = ProtoTool.GetVersion();
                    login.OnCompleted             = (su, res) =>
                    {
                        if (res.Code == ErrorCode.OK)
                        {
                            GateServer = res.Server;
                            userID     = res.UserID;
                            sessionKey = res.Session;
                            lclient.Disconnect();
                            MEvent.Set();
                        }
                    };
                    login.SendRequestSync();
                }
            };

            lclient.Connect();
        }
コード例 #2
0
    private void RequestPlayer()
    {
        var request = Client.CreateRequest <C2G_Login, G2C_Login>();

        request.RequestMessage.Session = UAppliaction.Singleton.SesssionKey;
        request.RequestMessage.UserID  = UAppliaction.Singleton.UserID;
        request.RequestMessage.Version = ProtoTool.GetVersion();
        request.OnCompleted            = (su, r) =>
        {
            if (r.Code == ErrorCode.OK)
            {
                GetPlayerData(r);
            }
            else if (r.Code == ErrorCode.NoGamePlayerData)
            {
                ShowCreateHero();
            }
            else
            {
                UUITipDrawer.Singleton.ShowNotify("GateServer Response:" + r.Code);
                UAppliaction.Singleton.GotoLoginGate();
            }
        };
        request.SendRequest();
    }
コード例 #3
0
ファイル: Appliaction.cs プロジェクト: xuebai5/ARPG-Game
        public void Start()
        {
            if (IsRunning)
            {
                return;
            }
            IsRunning = true;

            ResourcesLoader.Singleton.LoadAllConfig(configRoot);


            var listenHandler = new RequestHandle();

            //注册responser
            listenHandler.RegAssembly(this.GetType().Assembly, HandleResponserType.CLIENT_SERVER);
            ListenServer = new SocketServer(new ConnectionManager(), port);
            ListenServer.HandlerManager = listenHandler;
            ListenServer.Start();
            Client = new RequestClient(ServiceHost, ServicePort);
            Client.RegTaskHandlerFromAssembly(this.GetType().Assembly);
            Client.UseSendThreadUpdate = true;
            Client.OnConnectCompleted  = (s, e) =>
            {
                if (e.Success)
                {
                    var request = Client.CreateRequest <B2L_RegBattleServer, L2B_RegBattleServer>();
                    request.RequestMessage.MaxBattleCount = MaxBattleCount;
                    request.RequestMessage.ServiceHost    = ServerHost;
                    request.RequestMessage.ServicePort    = this.port;
                    request.RequestMessage.Version        = ProtoTool.GetVersion();
                    request.OnCompleted = (success, r) =>
                    {
                        if (success && r.Code == ErrorCode.OK)
                        {
                            ServerID = r.ServiceServerID;
                            Debuger.Log("Server Reg Success!");
                        }
                        else
                        {
                            Debuger.Log("Can't Regsiter LoginServer!");
                            Stop();
                        }
                    };
                    request.SendRequestSync();
                }
                else
                {
                    Debuger.Log("Can't connect LoginServer!");
                    Stop();
                }
            };
            Client.OnDisconnect = (s, e) =>
            {
                Debuger.Log("disconnect from LoginServer!");
                Stop();
            };
            Client.Connect();
            MonitorPool.Singleton.Start();
        }
コード例 #4
0
ファイル: BattleGate.cs プロジェクト: useada/ARPG-Game
    public override void Tick()
    {
        if (!IsInit)
        {
            if (Time.time - start < 0.1f)
            {
                return;
            }
            IsInit    = true;
            Operation = SceneManager.LoadSceneAsync(MapConfig.LevelName);
        }
        if (Operation != null)
        {
            if (Operation.isDone)
            {
                Operation = null;
                Client    = new RequestClient(ServerInfo.Host, ServerInfo.Port);
                Client.RegAssembly(this.GetType().Assembly);
                Client.RegisterHandler(MessageClass.Notify, new BattleNotifyHandler(this));
                Client.OnConnectCompleted += (s, e) =>
                {
                    UAppliaction.Singleton.ConnectTime = Time.time;
                    if (e.Success)
                    {
                        var request = Client.R <C2B_JoinBattle, B2C_JoinBattle>();
                        request.RequestMessage.Session = UAppliaction.Singleton.SesssionKey;
                        request.RequestMessage.UserID  = UAppliaction.Singleton.UserID;
                        request.RequestMessage.Version = ProtoTool.GetVersion();
                        request.RequestMessage.MapID   = MapID;
                        request.OnCompleted            = (success, response) =>
                        {
                            // UUITipDrawer.Singleton.ShowNotify("BattleServer:"+response.Code);
                            if (response.Code != ErrorCode.OK)
                            {
                                UUITipDrawer.Singleton.ShowNotify("BattleServer:" + response.Code);
                                UAppliaction.Singleton.GoBackToMainGate();
                            }
                        };
                        request.SendRequest();
                    }
                    else
                    {
                        UUITipDrawer.Singleton.ShowNotify("Can't login BattleServer!");
                        UAppliaction.Singleton.GoBackToMainGate();
                    }
                };
                Client.OnDisconnect += OnDisconnect;
                Client.Connect();
            }
        }

        if (Client != null)
        {
            Client.Update();
            UAppliaction.Singleton.ReceiveTotal = Client.ReceiveSize;
            UAppliaction.Singleton.SendTotal    = Client.SendSize;
            UAppliaction.Singleton.PingDelay    = (float)Client.Delay / (float)TimeSpan.TicksPerMillisecond;
        }
    }
コード例 #5
0
ファイル: UUILogin.cs プロジェクト: useada/ARPG-Game
 protected override void InitModel()
 {
     base.InitModel();
     //Write Code here
     bt_submit.onClick.AddListener(() =>
     {
         var userName = if_userName.text;
         var pwd      = if_pwd.text;
         var gate     = UAppliaction.Singleton.GetGate() as LoginGate;
         if (gate == null)
         {
             return;
         }
         var request = gate.Client.CreateRequest <C2L_Login, L2C_Login>();
         request.RequestMessage.Password = pwd;
         request.RequestMessage.UserName = userName;
         request.RequestMessage.Version  = Proto.ProtoTool.GetVersion();
         request.OnCompleted             = (success, response) => {
             if (response.Code == ErrorCode.OK)
             {
                 UAppliaction.Singleton.GoServerMainGate(response.Server, response.UserID, response.Session);
             }
             else
             {
                 UAppliaction.Singleton.ShowError(response.Code);
             }
         };
         request.SendRequest();
     });
     bt_reg.onClick.AddListener(() =>
     {
         var userName = if_userName.text;
         var pwd      = if_pwd.text;
         var gate     = UAppliaction.Singleton.GetGate() as LoginGate;
         var request  = gate.Client.CreateRequest <C2L_Reg, L2C_Reg>();
         request.RequestMessage.Password = pwd;
         request.RequestMessage.UserName = userName;
         request.RequestMessage.Version  = ProtoTool.GetVersion();
         request.OnCompleted             = (s, r) => {
             if (r.Code == ErrorCode.OK)
             {
                 UAppliaction.Singleton.GoServerMainGate(r.Server, r.UserID, r.Session);
             }
             else
             {
                 UUITipDrawer.Singleton.ShowNotify("Server Response:" + r.Code);
             }
         };
         request.SendRequest();
     });
 }
コード例 #6
0
        public void BeginGame()
        {
            client = new ServerUtility.RequestClient(BattleServer.Host, BattleServer.Port);
            client.UseSendThreadUpdate = true;

            client.OnConnectCompleted = (s, e) =>
            {
                if (e.Success)
                {
                    var login = client.CreateRequest <C2B_JoinBattle, B2C_JoinBattle>();
                    login.RequestMessage.MapID   = 1;
                    login.RequestMessage.Session = sessionKey;
                    login.RequestMessage.UserID  = userID;
                    login.RequestMessage.Version = ProtoTool.GetVersion();
                    login.SendRequestSync();
                }
            };
            client.Connect();
        }
コード例 #7
0
        private void Gate()
        {
            gclient = new ServerUtility.RequestClient(GateServer.Host, GateServer.Port);
            gclient.UseSendThreadUpdate = true;

            gclient.OnConnectCompleted = (s, e) =>
            {
                if (e.Success)
                {
                    var login = gclient.CreateRequest <C2G_Login, G2C_Login>();
                    login.RequestMessage.Session = sessionKey;
                    login.RequestMessage.UserID  = userID;
                    login.RequestMessage.Version = ProtoTool.GetVersion();
                    login.OnCompleted            = (t1, t2) =>
                    {
                        Debuger.Log(t2);
                    };
                    login.SendRequestSync();

                    var beginBattle = gclient.CreateRequest <C2G_BeginGame, G2C_BeginGame>();
                    beginBattle.RequestMessage.MapID = 1;
                    beginBattle.OnCompleted          = (se, res) =>
                    {
                        if (res.Code == ErrorCode.OK)
                        {
                            BattleServer = res.ServerInfo;
                            gclient.Disconnect();
                            MEvent.Set();
                        }
                    };
                    beginBattle.SendRequestSync();
                }
            };

            gclient.Connect();
        }
コード例 #8
0
ファイル: Appliaction.cs プロジェクト: xuebai5/ARPG-Game
        public void Start()
        {
            if (IsRunning)
            {
                return;
            }
            MonitorPool.Singleton.Start();
            ResourcesLoader.Singleton.LoadAllConfig(this.configRoot);
            IsRunning = true;
            //同时对外对内服务器不能使用全部注册
            var listenHandler = new RequestHandle();

            //2 对外
            listenHandler.RegAssembly(this.GetType().Assembly, HandleResponserType.CLIENT_SERVER);
            ListenServer = new SocketServer(new ConnectionManager(), port);
            ListenServer.HandlerManager = listenHandler;
            ListenServer.Start();

            var serviceHandler = new RequestHandle();

            serviceHandler.RegAssembly(this.GetType().Assembly, HandleResponserType.SERVER_SERVER);
            ServiceServer = new SocketServer(new ConnectionManager(), ServicePort);
            ServiceServer.HandlerManager = serviceHandler;
            ServiceServer.Start();


            Client = new RequestClient(LoginHost, LoginPort);
            Client.RegTaskHandlerFromAssembly(this.GetType().Assembly);
            Client.UseSendThreadUpdate = true;
            Client.OnConnectCompleted  = (s, e) =>
            {
                if (e.Success)
                {
                    int currentPlayer = 0;
                    using (var db = new DataBaseContext.GameDb(Connection))
                    {
                        currentPlayer = db.TBGAmePlayer.Count();
                    }
                    var request = Client.CreateRequest <G2L_Reg, L2G_Reg>();
                    request.RequestMessage.ServerID      = ServerID;
                    request.RequestMessage.Port          = this.port;
                    request.RequestMessage.Host          = serverHostName;
                    request.RequestMessage.ServiceHost   = ServiceHost;
                    request.RequestMessage.ServicesProt  = ServicePort;
                    request.RequestMessage.MaxPlayer     = 100000; //最大玩家数
                    request.RequestMessage.CurrentPlayer = currentPlayer;
                    request.RequestMessage.Version       = ProtoTool.GetVersion();
                    request.OnCompleted = (success, r) =>
                    {
                        if (success && r.Code == ErrorCode.OK)
                        {
                            Debuger.Log("Server Reg Success!");
                        }
                    };
                    request.SendRequestSync();
                }
                else
                {
                    Debuger.Log("Can't connect LoginServer!");
                    Stop();
                }
            };
            Client.OnDisconnect = (s, e) =>
            {
                Debuger.Log("Can't connect LoginServer!");
                Stop();
            };
            Client.Connect();
        }