private void OnHandleMsgPackests() { if (netMsgPackests.Count == 0) { return; } MsgPackest packest; while (netMsgPackests.TryDequeue(out packest)) { Session session = packest.session; INetMsgSerializer serializer = configuration.GetMsgSerializer(); object msgType = null; object msgData = null; try { msgData = serializer.Deserialize(packest.contents, out msgType); } catch (Exception e) { NetDebug.LogError("消息序列化失败:" + e); return; } IMessageHandler messageHander = configuration.GetMessageHander(); if (messageHander != null) { try { messageHander.DispatchMessage(session, msgType, msgData); } catch (Exception e) { NetDebug.LogError("DispatchMessage error:" + e); } } } }
protected bool SendData <T>(Session session, object msgType, T messageData) { //if (LogInfo) //{ //NetDebug.Log("Send Msg =>::" + typeof(T).Name + "-->" + JsonUtility.ToJson(messageData)); //} if (Transport == null) { return(false); } INetMsgSerializer serializer = configuration.GetMsgSerializer(); if (serializer == null) { NetDebug.LogError("No INetMsgSerializer!"); return(false); } if (msgType == null) { msgType = serializer.GetMsgType(messageData); } byte[] datas = null; try { datas = serializer.Serialize(msgType, messageData); } catch (Exception e) { NetDebug.LogError("INetMsgSerializer error:" + e); return(false); } sendMsgLoop.Enqueue(new SendMsgTempData(session, datas)); return(true); }
/// <summary> /// 默认服务端配置 /// </summary> /// <param name="transport"></param> /// <param name="serializer"></param> /// <param name="messageHandler"></param> /// <returns></returns> public static ServerConfiguration NewDefaultConfiguration(INetworkTransport transport, INetMsgSerializer serializer, IMessageHandler messageHandler) { return((ServerConfiguration) new ServerConfiguration(transport) .AddPlugin(new DataTypeMsgProcessPlugin()) .AddPlugin(new NetHeartBeatPongPlugin()) .AddPlugin(new NetPongPlugin()) .AddMsgSerializer(serializer) .AddMessageHander(messageHandler) .SetByteOrder(ByteOrder.BIG_ENDIAN)); }
public NetConfiguration AddMsgSerializer(INetMsgSerializer serializer) { this.serializer = serializer; return(this); }