/// <summary> /// 添加消息处理 /// </summary> /// <param name="msgID"></param> /// <param name="hand"></param> public void AddMessageParse(int msgID, NetClientMessageDelegate hand) { if (hand == null) { return; } if (!_msgHandlers.ContainsKey(msgID)) { _msgHandlers.Add(msgID, new List <NetClientMessageDelegate>()); } _msgHandlers[msgID].Add(hand); }
/// <summary> /// 移除消息处理 /// </summary> /// <param name="msgID"></param> /// <param name="hand"></param> public void RemoveMessageParse(int msgID, NetClientMessageDelegate hand) { if (hand == null) { return; } if (!_msgHandlers.ContainsKey(msgID)) { return; } if (_msgHandlers[msgID].Contains(hand)) { _msgHandlers[msgID].Remove(hand); } }
private void OnReceiveMessage(NetClient client, int msgID, byte[] data) { if (data == null || data.Length == 0) { return; } if (!_msgHandlers.ContainsKey(msgID)) { return; } var lstHandler = _msgHandlers[msgID]; var aryHandler = new NetClientMessageDelegate[lstHandler.Count]; lstHandler.CopyTo(aryHandler); foreach (var item in aryHandler) { item(client, data); } }