コード例 #1
0
        private void LoginLobby(string url, string user, string pass)
        {
            if (GlobalVariables.Instance.IsFullClient)
            {
                m_Url  = url;
                m_User = user;
                m_Pass = pass;

                m_Guid = 1;
                GfxSystem.PublishGfxEvent("ge_start_login", "lobby", "user", 0);
                GfxSystem.PublishGfxEvent("ge_init_userinfo", "lobby", user, user, (int)m_Guid, 100);
            }
            else
            {
                if (IsConnected)
                {
                    m_WebSocket.Close();
                }

                m_IsWaitStart = false;
                m_IsLogged    = false;

                m_Url  = url;
                m_User = user;
                m_Pass = pass;

                ConnectIfNotOpen();
            }
            GfxSystem.GfxLog("LoginLobby {0} {1} {2}", url, user, pass);
        }
コード例 #2
0
        private void HandleStartGameResult(int id, JsonData msg)
        {
            int    sceneType = msg.GetInt("m_SceneType");
            uint   key       = msg.GetUint("m_Key");
            string ip        = msg.GetString("m_ServerIp");
            int    port      = msg.GetInt("m_ServerPort");
            int    heroId    = msg.GetInt("m_HeroId");
            int    campId    = msg.GetInt("m_CampId");
            int    weaponId  = msg.GetInt("m_WeaponId");
            int    sceneId   = msg.GetInt("m_SceneType");

            Data_SceneConfig cfg = SceneConfigProvider.Instance.GetSceneConfigById(sceneType);

            if (null == cfg || cfg.m_Type == (int)SceneTypeEnum.TYPE_PVE)
            {
                NetworkSystem.Instance.HeroId  = heroId;
                NetworkSystem.Instance.CampId  = campId;
                NetworkSystem.Instance.SceneId = sceneId;
            }
            else
            {
                NetworkSystem.Instance.Start(key, ip, port, heroId, campId, sceneId);
            }
            GameControler.ChangeScene((int)msg["m_SceneType"]);

            GfxSystem.GfxLog("HandleStartGameResult");
        }
コード例 #3
0
ファイル: NetWorkSystem.cs プロジェクト: yqxflong/DashFire
        private void OnRecvMessage()
        {
            m_NetClient.MessageReceivedEvent.WaitOne(1000);
            NetIncomingMessage im;

            while ((im = m_NetClient.ReadMessage()) != null)
            {
                switch (im.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                    LogSystem.Debug("Debug Message: {0}", im.ReadString());
                    break;

                case NetIncomingMessageType.ErrorMessage:
                    LogSystem.Debug("Error Message: {0}", im.ReadString());
                    break;

                case NetIncomingMessageType.WarningMessage:
                    LogSystem.Debug("Warning Message: {0}", im.ReadString());
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = im.SenderConnection.Status;

                    string reason = im.ReadString();
                    LogSystem.Debug("Network Status Changed:{0} Reason:{1}\nStatistic:{2}", status.ToString(), reason, im.SenderConnection.Statistics.ToString());
                    if (NetConnectionStatus.Disconnected == status)
                    {
                        m_IsConnected = false;
                    }
                    else if (NetConnectionStatus.Connected == status)
                    {
                        OnConnected(im.SenderConnection);
                    }
                    break;

                case NetIncomingMessageType.Data:
                    if (m_IsConnected == false)
                    {
                        break;
                    }
                    try {
                        object msg = Serialize.Decode(im.ReadBytes(im.LengthBytes));
                        if (msg != null)
                        {
                            PushMsg(msg, im.SenderConnection);
                        }
                    } catch (Exception ex) {
                        GfxSystem.GfxLog("Decode Message exception:{0}\n{1}", ex.Message, ex.StackTrace);
                    }
                    break;

                default:
                    break;
                }
                m_NetClient.Recycle(im);
            }
        }
コード例 #4
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
        private void SendHeartbeat()
        {
            CLJsonMsgHeartbeat msg = new CLJsonMsgHeartbeat();

            msg.m_Guid = m_Guid;
            SendTextMessage(msg);
            GfxSystem.GfxLog("Send User Heartbeat : {0} , Time : {1}", m_UserHeartbeatCount++, DateTime.Now.ToString());
        }
コード例 #5
0
 private void HandleLoginResult(int id, JsonData msg)
 {
     if (0 == msg.GetInt("m_Result"))
     {
         GfxSystem.PublishGfxEvent("ge_start_login", "lobby", "user", 0);
     }
     GfxSystem.GfxLog("HandleLoginResult");
 }
コード例 #6
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
        private void webSocketClient_MessageReceived(object sender, MessageReceivedEventArgs e)
        {
            //收到消息后进行处理
            string rawMsgString = e.Message;

            GfxSystem.GfxLog("==> Websocket Recived Message: {0}", rawMsgString);
            LogSystem.Info("==> Websocket Recived Message: {0}", rawMsgString);
            try
            {
                WebSocketMessageTypes websocketMsgType = GetWebSocketMessageType(rawMsgString);
                if (websocketMsgType == WebSocketMessageTypes.Event)
                {
                    //处理事件消息
                    JsonMessage msg           = null;
                    string      jsonMsgString = "";
                    string      eventName     = HandleRawMsg(rawMsgString, out jsonMsgString);
                    int         msgId         = int.Parse(eventName);
                    Type        type          = m_JsonMsgDispatcher.GetMessageType(msgId);
                    msg = JsonConvert.DeserializeObject(jsonMsgString, type) as JsonMessage;
                    if (msg != null)
                    {
                        msg.m_ID = msgId;
                        m_JsonMsgDispatcher.HandleJsonMessage(msg);
                    }
                }
                else if (websocketMsgType == WebSocketMessageTypes.Message)
                {
                    GfxSystem.GfxLog("!!!!!! Text Message: {0}", rawMsgString);
                    int         msgId   = 0;
                    JsonMessage msg     = null;
                    string[]    rawArgs = rawMsgString.Split(SPLITTER_VERTICAL, 2);
                    if (rawArgs.Length == 2)
                    {
                        int id;
                        if (int.TryParse(rawArgs[0], out id))
                        {
                            msgId = id;
                        }
                        GfxSystem.GfxLog("!!!!!! Client recive message id : {0}", msgId);
                        Type type = m_JsonMsgDispatcher.GetMessageType(msgId);
                        msg = JsonConvert.DeserializeObject(rawArgs[1], type) as JsonMessage;
                        if (msg != null)
                        {
                            GfxSystem.GfxLog("!!!!!! Client recive message: {0}", msg);
                        }
                    }
                }
                else if (websocketMsgType == WebSocketMessageTypes.Heartbeat)
                {
                    //向node.js回复心跳消息
                    AnswerHeartbeat();
                }
            }
            catch (System.Exception ex)
            {
                GfxSystem.GfxLog("Recived Message Error:{0} ", ex);
            }
        }
コード例 #7
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
 private void LoginLobby(string ip, int port, string user, string passwd)
 {
     GfxSystem.GfxLog("LoginLobby:{0}:{1} {2}/{3}", ip, port, user, passwd);
     m_Address = string.Format("http://{0}:{1}", ip, port);
     m_Uri     = new Uri(m_Address);
     ConnectIfNotOpen();
     m_Account     = user;
     m_Password    = passwd;
     m_IsWaitStart = false;
 }
コード例 #8
0
 private void OnError(object sender, SocketIOClient.ErrorEventArgs e)
 {
     if (null == e.Exception)
     {
         GfxSystem.GfxLog("LobbyNetworkSystem.OnError:{0}", e.Message);
     }
     else
     {
         GfxSystem.GfxLog("LobbyNetworkSystem.OnError:{0} Exception:{1}\n{2}", e.Message, e.Exception.Message, e.Exception.StackTrace);
     }
 }
コード例 #9
0
        internal bool SendMessage(string msgStr)
        {
            bool ret = false;

            if (null != m_WebSocket && m_WebSocket.IsConnected)
            {
                m_WebSocket.Send(msgStr);
                GfxSystem.GfxLog("SendToLobby {0}", msgStr);
                ret = true;
            }
            return(ret);
        }
コード例 #10
0
        private void OnOpened(object sender, EventArgs e)
        {
            JsonData loginMsg = new JsonData();

            loginMsg["m_Account"] = m_User;
            loginMsg["m_Passwd"]  = m_Pass;
            loginMsg["m_Ip"]      = "127.0.0.1";
            loginMsg["m_MacAddr"] = "FFFFFFFFFFFF";
            SendMessage(JsonMessageID.Login, loginMsg);

            GfxSystem.GfxLog("LobbyConnect opened.");
        }
コード例 #11
0
        private void HandleUserInfo(int id, JsonData msg)
        {
            m_Guid = msg.GetUlong("m_Guid");
            string account = msg.GetString("m_Account");
            string nick    = msg.GetString("m_Nick");
            int    level   = msg.GetInt("m_Level");

            m_IsLogged = true;

            GfxSystem.PublishGfxEvent("ge_init_userinfo", "lobby", account, nick, (int)m_Guid, level);

            GfxSystem.GfxLog("HandleUserInfo");
        }
コード例 #12
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
 public void SendEventMessage(JsonMessage msg)
 {
     try {
         if (msg != null)
         {
             string s      = JsonConvert.SerializeObject(msg);
             string msgStr = "5:::{\"name\":\"" + msg.m_ID.ToString() + "\",\"args\":[" + s + "]}";
             this.SendMessage(msgStr);
         }
     } catch (System.Exception ex) {
         GfxSystem.GfxLog("Build Json Message String Error: {0}", ex);
     }
 }
コード例 #13
0
ファイル: NetWorkSystem.cs プロジェクト: yqxflong/DashFire
        public void Start(uint key, string ip, int port, int heroId, int campId, int sceneId)
        {
            m_Key     = key;
            m_Ip      = ip;
            m_Port    = port;
            m_HeroId  = heroId;
            m_CampId  = campId;
            m_SceneId = sceneId;

            m_IsWaitStart = false;
            m_IsConnected = false;

            GfxSystem.GfxLog("NetworkSystem.Start key {0} ip {1} port {2} hero {3} camp {4} scene {5}", key, ip, port, heroId, campId, sceneId);
        }
コード例 #14
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
        private void HandleStartGameResult(JsonMessage msg)
        {
            LCJsonMsgStartGameResult lcMsg = msg as LCJsonMsgStartGameResult;

            if (lcMsg != null)
            {
                GfxSystem.GfxLog("!!!!! Start Game Args:{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}",
                                 lcMsg.m_Guid, lcMsg.m_ServerIp, lcMsg.m_ServerPort, lcMsg.m_Key, lcMsg.m_CampId, lcMsg.m_HeroId, lcMsg.m_WeaponId, lcMsg.m_SceneType);

                GfxSystem.LoadScene("Test");
                NetWorkSystem.Instance.Start(lcMsg.m_Key, lcMsg.m_ServerIp, (int)lcMsg.m_ServerPort, lcMsg.m_HeroId, lcMsg.m_CampId);
                GameControler.ChangeScene(lcMsg.m_SceneType);
            }
        }
コード例 #15
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
 private void webSocketClient_Opened(object sender, EventArgs e)
 {
     GfxSystem.GfxLog("Websocket Opened");
     if (!m_IsLogged)
     {
         CLJsonMsgLogin loginMsg = new CLJsonMsgLogin();
         loginMsg.m_Account = m_Account;
         loginMsg.m_Passwd  = m_Password;
         loginMsg.m_IP      = "127.0.0.1";
         loginMsg.m_MacAddr = "6666666";
         SendTextMessage(loginMsg);
         m_Password = "";
         m_IsLogged = true;
     }
 }
コード例 #16
0
 private static void HandleNodeMessage(int id, JsonData msg)
 {
     if (s_Inited && msg != null)
     {
         JsonMessageHandlerDelegate handler = s_MessageHandlers[id];
         if (handler != null)
         {
             try {
                 handler(id, msg);
             } catch (Exception ex) {
                 GfxSystem.GfxLog("[Exception] HandleNodeMessage:{0} throw:{1}\n{2}", id, ex.Message, ex.StackTrace);
             }
         }
     }
 }
コード例 #17
0
        private void ConnectIfNotOpen()
        {
            if (!IsConnected)
            {
                m_IsLogged        = false;
                m_LastConnectTime = TimeUtility.GetLocalMilliseconds();
                GfxSystem.GfxLog("ConnectIfNotOpen at time {0}", m_LastConnectTime);

                m_WebSocket         = new SocketIOClient.Client(m_Url);
                m_WebSocket.Opened += OnOpened;
                m_WebSocket.Error  += OnError;
                m_WebSocket.SocketConnectionClosed += OnClosed;
                m_WebSocket.Message += OnMessageReceived;
                m_WebSocket.Connect();
            }
        }
コード例 #18
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
 public void SendTextMessage(JsonMessage msg)
 {
     try
     {
         if (msg != null)
         {
             string jsonStr = JsonConvert.SerializeObject(msg);
             string bodyStr = string.Format("{0}|{1}|{2}", msg.m_ID, m_Guid, jsonStr);;
             string msgStr  = "3:::" + bodyStr;
             this.SendMessage(msgStr);
         }
     }
     catch (System.Exception ex)
     {
         GfxSystem.GfxLog("Build Json Message String Error: {0}", ex);
     }
 }
コード例 #19
0
ファイル: NetWorkSystem.cs プロジェクト: yqxflong/DashFire
 public void Tick()
 {
     try {
         if (m_NetClient == null)
         {
             return;
         }
         if (m_IsConnected)
         {
             if (TimeUtility.GetLocalMilliseconds() - m_LastPingTime >= m_PingInterval)
             {
                 InternalPing();
             }
         }
         ProcessMsg();
     } catch (Exception e) {
         string err = "Exception:" + e.Message + "\n" + e.StackTrace + "\n";
         GfxSystem.GfxLog("Exception:{0}\n{1}", e.Message, e.StackTrace);
     }
 }
コード例 #20
0
        private static unsafe JsonData DecodeJsonMessage(string msgStr, out int id)
        {
            JsonData msg = null;

            id = 0;
            if (s_Inited)
            {
                try {
                    GfxSystem.GfxLog("DecodeJsonMessage:{0}", msgStr);

                    int ix = msgStr.IndexOf('|');
                    if (ix > 0)
                    {
                        id  = int.Parse(msgStr.Substring(0, ix));
                        msg = JsonMapper.ToObject(msgStr.Substring(ix + 1));
                    }
                } catch (Exception ex) {
                    GfxSystem.GfxLog("[Exception] DecodeJsonMessage:{0} throw:{1}\n{2}", msgStr, ex.Message, ex.StackTrace);
                }
            }
            return(msg);
        }
コード例 #21
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
        private void ConnectIfNotOpen()
        {
            if (!(this.m_ReadyState == WebSocketState.Connecting || this.m_ReadyState == WebSocketState.Open))
            {
                try {
                    m_Handshake = RequestHandshake(m_Uri);
                    if (m_Handshake == null || m_Handshake.SID.Trim() == string.Empty || m_Handshake.HadError)
                    {
                        GfxSystem.GfxLog("Failed to request socketio handshake ");
                    }
                    else
                    {
                        string wsScheme = (m_Uri.Scheme == Uri.UriSchemeHttps ? "wss" : "ws");
                        m_WebsocketClient = new WebSocket(
                            string.Format("{0}://{1}:{2}/socket.io/1/websocket/{3}", wsScheme, m_Uri.Host, m_Uri.Port, m_Handshake.SID),
                            string.Empty,
                            m_SocketVersion);
                        m_WebsocketClient.EnableAutoSendPing = false;
                        m_WebsocketClient.add_Opened(new EventHandler <EventArgs>(webSocketClient_Opened));
                        m_WebsocketClient.add_Closed(new EventHandler <EventArgs>(webSocketClient_Closed));
                        m_WebsocketClient.add_Error(new EventHandler <ErrorEventArgs>(webSocketClient_Error));
                        m_WebsocketClient.add_MessageReceived(new EventHandler <MessageReceivedEventArgs>(webSocketClient_MessageReceived));

                        /*
                         * m_WebsocketClient.Opened += this.webSocketClient_Opened;
                         * m_WebsocketClient.MessageReceived += this.webSocketClient_MessageReceived;
                         * m_WebsocketClient.Closed += webSocketClient_Closed;
                         * m_WebsocketClient.Error += this.webSocketClient_Error;
                         */
                        m_WebsocketClient.Open();
                        m_LastConnectTime = TimeUtility.GetLocalMilliseconds();
                        GfxSystem.GfxLog("Try to Open ... {0}", DateTime.Now.ToString());
                    }
                } catch (Exception ex) {
                    GfxSystem.GfxLog("Websocket connect error : " + ex.ToString());
                }
            }
        }
コード例 #22
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
        private void CloseWebSocketClient()
        {
            if (this.m_WebsocketClient != null)
            {
                // unwire events
                m_WebsocketClient.remove_Opened(new EventHandler <EventArgs>(webSocketClient_Opened));
                m_WebsocketClient.remove_Closed(new EventHandler <EventArgs>(webSocketClient_Closed));
                m_WebsocketClient.remove_Error(new EventHandler <ErrorEventArgs>(webSocketClient_Error));
                m_WebsocketClient.remove_MessageReceived(new EventHandler <MessageReceivedEventArgs>(webSocketClient_MessageReceived));

                /*
                 * this.m_WebsocketClient.Closed -= this.webSocketClient_Closed;
                 * this.m_WebsocketClient.MessageReceived -= webSocketClient_MessageReceived;
                 * this.m_WebsocketClient.Error -= webSocketClient_Error;
                 * this.m_WebsocketClient.Opened -= this.webSocketClient_Opened;
                 */
                if (this.m_WebsocketClient.State == WebSocketState.Connecting || this.m_WebsocketClient.State == WebSocketState.Open)
                {
                    try { this.m_WebsocketClient.Close(); }
                    catch { GfxSystem.GfxLog("exception raised trying to close websocket: can safely ignore, socket is being closed"); }
                }
                this.m_WebsocketClient = null;
            }
        }
コード例 #23
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
 private void webSocketClient_Error(object sender, EventArgs e)
 {
     GfxSystem.GfxLog("Websocket Error : " + e.ToString());
 }
コード例 #24
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
 private void SendMessage(string msgStr)
 {
     GfxSystem.GfxLog("Websocket Send Message ==> {0}", msgStr);
     m_WebsocketClient.Send(msgStr);
 }
コード例 #25
0
ファイル: CLNetworkSystem.cs プロジェクト: yqxflong/DashFire
 private void webSocketClient_Closed(object sender, EventArgs e)
 {
     GfxSystem.GfxLog("Websocket Closed ");
     CloseWebSocketClient();
 }
コード例 #26
0
 private void HandleFindTeamResult(int id, JsonData msg)
 {
     GfxSystem.GfxLog("HandleFindTeamResult");
 }