NetWorkMessage  Analysis(ByteArray bytes)
    {
        NetWorkMessage msg = new NetWorkMessage();

        bytes.ReadUShort();                   //消息长度
        bytes.ReadByte();                     //模块名

        int methodIndex = bytes.ReadUShort(); //方法名

        //Debug.Log("methodIndex " + methodIndex);
        //Debug.Log("ReceiveDataLoad : " + BitConverter.ToString(bytes.Buffer));
        try
        {
            msg.m_MessageType = m_methodNameInfo[methodIndex];
        }
        catch
        {
            throw new Exception("没有找到消息号! " + methodIndex);
        }

        int re_len = bytes.Length - 5;

        msg.m_data = AnalysisData(msg.m_MessageType, bytes.ReadBytes(re_len));

        if (msg.m_data == null)
        {
            throw new Exception("protocol msg.m_data is null !");
        }

        return(msg);
    }
Exemple #2
0
    public void CallBack(string s)
    {
        try
        {
            if (s != null && s != "")
            {
                NetWorkMessage msg = new NetWorkMessage();

                s = WWW.UnEscapeURL(s);
                s = s.Replace(c_endCharReplaceString, c_endChar.ToString());

                Debug.Log(s);

                Dictionary <string, object> data = Json.Deserialize(s) as Dictionary <string, object>;

                msg.m_data        = data;
                msg.m_MessageType = data["MT"].ToString();

                m_messageCallBack(msg);
            }
        }
        catch (Exception e)
        {
            Debug.LogError("Message error ->" + s + "<-\n" + e.ToString());
        }
    }
    NetWorkMessage  Analysis(ByteArray bytes)
    {
        NetWorkMessage msg = GetMessageByPool();

        bytes.ReadUShort();                   //消息长度
        bytes.ReadByte();                     //模块名

        int methodIndex = bytes.ReadUShort(); //方法名

        //Debug.Log("methodIndex " + methodIndex);
        //Debug.Log("ReceiveDataLoad : " + BitConverter.ToString(bytes.Buffer));
        try
        {
            msg.m_MessageType = m_methodNameInfo[methodIndex];
        }
        catch
        {
            Debug.LogError("没有找到消息号! " + methodIndex);
            return(null);
        }

        int re_len = bytes.Length - 5;

        msg.m_data = AnalysisData(msg.m_MessageType, bytes.ReadBytes(re_len));


        return(msg);
    }
    public void CallBack(string s)
    {
        try
        {
            if (s != null && s != "")
            {
                Debug.Log("JsonNetworkService ->" + s);

                NetWorkMessage msg = new NetWorkMessage();

                s = WWW.UnEscapeURL(s);
                s = s.Replace(c_endCharReplaceString, c_endChar.ToString());
                Dictionary <string, object> data = Json.Deserialize(s) as Dictionary <string, object>;

                msg.m_data        = data;
                msg.m_MessageType = data["MT"].ToString();

                if (data.ContainsKey("MsgCode"))
                {
                    msg.m_MsgCode = (int)data["MsgCode"];
                }

                m_messageCallBack(msg);
            }
        }
        catch (Exception e)
        {
            Debug.LogError("Message error ->" + s + "<-\n" + e.ToString());
        }
    }
    private void ReciveHBDealThread()
    {
        while (true)
        {
            if (NetworkManager.IsConnect)
            {
                NetWorkMessage msg = NetworkManager.GetHeartBeatMessage();

                if (!string.IsNullOrEmpty(msg.m_MessageType))
                {
                    ResetReceviceTimer();
                }
                else
                {
                    m_receviceHeatBeatTimer -= ReciveThreadSleepTime;
                }
                //长期没收到服务器返回认为断线
                if (m_receviceHeatBeatTimer <= 0)
                {
                    Debug.Log("HeartBeat Break connect");
                    NetworkManager.DisConnect();
                }
            }
            else
            {
                ResetReceviceTimer();
            }
            Thread.Sleep(ReciveThreadSleepTime);
        }
    }
    static void ReceviceMeaasge(NetWorkMessage message)
    {
        if (message.m_MessageType != null)
        {
            if (s_heatBeat.IsHeartBeatMessage(message))
            {
                lock (s_messageListHeartBeat)
                {
                    s_messageListHeartBeat.Add(message);
                }
            }
            else
            {
                lock (s_messageList)
                {
                    s_messageList.Add(message);
                }
            }

            msgCount++;
        }
        else
        {
            Debug.LogError("ReceviceMeaasge m_MessageType is null !");
        }
    }
    public void InitMessagePool(int poolSize)
    {
        m_messagePool = new NetWorkMessage[poolSize];

        for (int i = 0; i < poolSize; i++)
        {
            m_messagePool[i] = new NetWorkMessage();
        }
    }
Exemple #8
0
 public override void OnReceiveMsg(NetWorkMessage message)
 {
     if (IsHeartBeatMessage(message))
     {
         lock (s_messageListHeartBeat)
         {
             s_messageListHeartBeat.Add(message);
         }
     }
 }
 static void Dispatch(NetWorkMessage msg)
 {
     try
     {
         InputNetworkEventProxy.DispatchMessageEvent(msg.m_MessageType, msg.m_data);
     }
     catch (Exception e)
     {
         Debug.LogError("Message Error:->" + Json.Serialize(msg.m_data) + "<-\n" + e.ToString());
     }
 }
 static void ReceviceMeaasge(NetWorkMessage message)
 {
     if (message.m_MessageType != null)
     {
         s_messageList.Add(message);
     }
     else
     {
         Debug.LogError("ReceviceMeaasge m_MessageType is null !");
     }
 }
Exemple #11
0
 static void ReceviceMeaasge(NetWorkMessage message)
 {
     if (message != null)
     {
         s_messageList.Add(message);
     }
     else
     {
         Debug.LogError("Message Error: Message is null");
     }
 }
    public void CallBack(string s)
    {
        //Debug.Log("CallBack s ->" + s);

        try
        {
            if (s != null && s != "")
            {
                //解密
                if (EncryptionService.IsSecret)
                {
                    s = EncryptionService.Decrypt(s);
                }

                NetWorkMessage msg = new NetWorkMessage();

                s = s.Replace(c_endCharReplaceString, c_endChar.ToString());
                Dictionary <string, object> data = Json.Deserialize(s) as Dictionary <string, object>;

                msg.m_data        = data;
                msg.m_MessageType = data["MT"].ToString();

                if (data.ContainsKey("MsgCode"))
                {
                    msg.m_MsgCode = int.Parse(data["MsgCode"].ToString());

                    if (m_msgCode != msg.m_MsgCode)
                    {
                        Debug.LogError("MsgCode error currentCode " + m_msgCode + " server code " + msg.m_MsgCode);
                        if (msg.m_MsgCode > m_msgCode)
                        {
                            m_msgCode = msg.m_MsgCode;
                            m_msgCode++;
                            m_messageCallBack(msg);
                        }
                    }
                    else
                    {
                        m_msgCode++;
                        m_messageCallBack(msg);
                    }
                }
                else
                {
                    m_messageCallBack(msg);
                }
            }
        }
        catch (Exception e)
        {
            Debug.LogError("Message error ->" + s + "<-\n" + e.ToString());
        }
    }
Exemple #13
0
 /// <summary>
 /// 判断消息是否是心跳包消息
 /// </summary>
 /// <param name="msg"></param>
 /// <returns></returns>
 public virtual bool IsHeartBeatMessage(NetWorkMessage msg)
 {
     if (msg.m_MessageType == null)
     {
         return(false);
     }
     if (msg.m_MessageType == c_HeartBeatMT)
     {
         return(true);
     }
     return(false);
 }
Exemple #14
0
    public void CallBack(string s)
    {
        try
        {
            if(s != null && s != "")
            {
                //Debug.Log("MessageReceive ->" + s);

                NetWorkMessage msg = new NetWorkMessage();

                //s = WWW.UnEscapeURL(s);
                //Debug.Log("MessageReceive0 ->" + s);
                s = s.Replace(c_endCharReplaceString, c_endChar.ToString());
                //Debug.Log("MessageReceive1 ->" + s);
                Dictionary<string, object> data = Json.Deserialize(s) as Dictionary<string, object>;

                msg.m_data = data;
                msg.m_MessageType = data["MT"].ToString();

                if(data.ContainsKey("MsgCode"))
                {
                    msg.m_MsgCode = int.Parse(data["MsgCode"].ToString());

                    if(m_msgCode != msg.m_MsgCode)
                    {
                        Debug.LogError("MsgCode error currentCode " + m_msgCode + " server code " + msg.m_MsgCode);
                        if (msg.m_MsgCode > m_msgCode)
                        {
                            m_msgCode = msg.m_MsgCode;
                            m_msgCode++;
                        }

                        
                        //throw new Exception();
                    }
                    else
                    {
                        m_msgCode++;
                        m_messageCallBack(msg);
                    }
                }
                else
                {
                    m_messageCallBack(msg);
                }
            }
        }
        catch(Exception e)
        {
            Debug.LogError("Message error ->" + s +"<-\n" + e.ToString());
        }
    }
    protected NetWorkMessage GetMessageByPool()
    {
        NetWorkMessage result = m_messagePool[m_msgPoolIndex];

        m_msgPoolIndex++;

        if (m_msgPoolIndex >= m_messagePool.Length)
        {
            m_msgPoolIndex = 0;
        }

        return(result);
    }
    /// <summary>
    /// 取出心跳消息
    /// </summary>
    /// <returns></returns>
    public static NetWorkMessage GetHeartBeatMessage()
    {
        NetWorkMessage msg = default(NetWorkMessage);

        lock (s_messageListHeartBeat)
        {
            if (s_messageListHeartBeat.Count > 0)
            {
                msg = s_messageListHeartBeat[0];
                s_messageListHeartBeat.RemoveAt(0);
            }
        }
        return(msg);
    }
Exemple #17
0
 static int GetHeartBeatMessage(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 0);
         NetWorkMessage o = NetworkManager.GetHeartBeatMessage();
         ToLua.PushValue(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Exemple #18
0
    /// <summary>
    /// 取出心跳消息
    /// </summary>
    /// <returns></returns>
    public bool GetHeartBeatMessage()
    {
        NetWorkMessage msg = default(NetWorkMessage);

        lock (s_messageListHeartBeat)
        {
            if (s_messageListHeartBeat.Count > 0)
            {
                msg = s_messageListHeartBeat[0];
                s_messageListHeartBeat.RemoveAt(0);
                return(true);
            }
        }
        return(false);
    }
    //解包
    private void ReceiveDataLoad(byte[] bytes)
    {
        try
        {
            //用于做数据处理,加解密,或者压缩于解压缩
            ByteArray bas = new ByteArray(bytes);

            NetWorkMessage msg = Analysis(bas);
            m_messageCallBack(msg);
        }
        catch (Exception e)
        {
            Debug.LogError(e.ToString());
        }
    }
    NetWorkMessage  Analysis(ByteArray bytes)
    {
        NetWorkMessage msg = new NetWorkMessage();

        bytes.ReadShort();                   //消息长度
        bytes.ReadByte();                    //模块名

        int methodIndex = bytes.ReadShort(); //方法名

        msg.m_MessageType = m_methodNameInfo[methodIndex];
        int re_len = bytes.Length - 5;

        msg.m_data = AnalysisData(msg.m_MessageType, bytes.ReadBytes(re_len));

        return(msg);
    }
 static void Dispatch(NetWorkMessage msg)
 {
     try
     {
         InputNetworkEventProxy.DispatchMessageEvent(msg.m_MessageType, msg.m_data);
     }
     catch (Exception e)
     {
         string messageContent = "";
         if (msg.m_data != null)
         {
             messageContent = Json.Serialize(msg.m_data);
         }
         Debug.LogError("Message Error: MessageType is ->" + msg.m_MessageType + "<- MessageContent is ->" + messageContent + "<-\n" + e.ToString());
     }
 }
    NetWorkMessage  Analysis(ByteArray bytes)
    {
        NetWorkMessage msg = GetMessageByPool();
        //Debug.Log("ReceiveDataLoad : " + BitConverter.ToString(bytes));
        bytes.ReadUShort(); //消息长度
        bytes.ReadByte();  //模块名

        int methodIndex = bytes.ReadUShort(); //方法名

        msg.m_MessageType = m_methodNameInfo[methodIndex];
        int re_len = bytes.Length - 5;
        msg.m_data = AnalysisData(msg.m_MessageType, bytes.ReadBytes(re_len));


        return msg;
    }
Exemple #23
0
    public override void OnReceiveMsg(NetWorkMessage message)
    {
        if (message.m_MessageType != null)
        {
            lock (s_messageList)
            {
                s_messageList.Add(message);
            }


            msgCount++;
        }
        else
        {
            Debug.LogError("ReceviceMeaasge m_MessageType is null !");
        }
    }
    //解包
    private void ReceiveDataLoad(byte[] bytes)
    {
        try
        {
            ByteArray ba = HeapObjectPoolTool <ByteArray> .GetHeapObject();

            //用于做数据处理,加解密,或者压缩于解压缩
            ba.clear();
            ba.Add(bytes);

            NetWorkMessage msg = Analysis(ba);
            m_messageCallBack(msg);
        }
        catch (Exception e)
        {
            Debug.LogError(e.ToString());
        }
    }
Exemple #25
0
 void ReceviceMeaasge(NetWorkMessage message)
 {
     if (message.m_MessageType != null)
     {
         foreach (var item in plugins.Values)
         {
             try
             {
                 item.OnReceiveMsg(message);
             }
             catch (Exception e)
             {
                 Debug.LogError(item.GetType() + ".OnReceiveMsg \n" + e);
             }
         }
     }
     else
     {
         Debug.LogError("ReceviceMeaasge m_MessageType is null !");
     }
 }
Exemple #26
0
 public override void OnReceiveMsg(NetWorkMessage message)
 {
     statistics.PacketsReceived++;
 }
 static void ReceviceMeaasge(NetWorkMessage message)
 {
     s_messageList.Add(message);
 }
Exemple #28
0
    protected NetWorkMessage GetMessageByPool()
    {
        NetWorkMessage result = HeapObjectPool <NetWorkMessage> .GetObject();

        return(result);
    }
Exemple #29
0
 public virtual void OnReceiveMsg(NetWorkMessage message)
 {
 }