private void receiveData(byte[] data) { root_proto proto = new root_proto(); proto = Deserialize(root_proto.Parser, data) as root_proto; Debug.Log("Client.receiveData messageName = " + proto.MessageName); //校正服务器时间 Function.SetServerTime((long)proto.ServerTime); //数据 byte[] byteData = proto.MessageData.ToByteArray(); //取消菊花 if (0 != proto.MessageID && true == RequestLoadDict[proto.MessageID]) { //0是推送协议 LoadLayerManager.Instance.RemoveLoad(); } RequestLoadDict.Remove(proto.MessageID); //事件 UserEventManager.TriggerEvent(proto.MessageName, byteData); //激活回调函数 if (CallbackDict.ContainsKey(proto.MessageID)) { try { RequestCallback callback = CallbackDict[proto.MessageID]; if (null != callback) { callback(byteData); } CallbackDict.Remove(proto.MessageID); } catch (Exception e) { Debug.LogError(e); } } }
public void Request(IMessage msg, RequestCallback callback = null, bool needLoad = true) { root_proto proto = new root_proto(); //序列化 byte[] data = Serialize(msg); proto.ConnectID = connectID; proto.MessageID = SendCount++; proto.MessageName = msg.GetType().ToString(); proto.MessageData = ByteString.CopyFrom(data); //本地序列化 byte[] protoByte = Function.Serialization(Serialize(proto)); //保存回调 CallbackDict.Add(proto.MessageID, callback); //加入发送队列 SendQueue.Enqueue(protoByte); //菊花 RequestLoadDict.Add(proto.MessageID, needLoad); if (true == needLoad) { LoadLayerManager.Instance.AddLoad(); } }