public void Send(SocketMsg msg) { byte[] data = EncoderTool.EncodeMsg(msg); byte[] packet = EncoderTool.EnconderPacket(data); try { socket.Send(packet); } catch (System.Exception e) { Debug.LogError(e.Message); } }
/// <summary> /// 广播房间内的玩家这条消息 /// </summary> /// <param name="opCode"></param> /// <param name="subCode"></param> /// <param name="value"></param> public void Brocast(int opCode, int subCode, object value, ClientPeer exClient = null) { SocketMsg msg = new SocketMsg(opCode, subCode, value); byte[] data = EncoderTool.EncodeMsg(msg); byte[] packet = EncoderTool.EnconderPacket(data); foreach (var client in uIdClientDict.Values) { if (client == exClient) { continue; } client.Send(packet); } }
/// <summary> /// 广播 /// </summary> private void Brocast(FightRoom room, int opCode, int subCode, object value, ClientPeer exClient = null) { SocketMsg msg = new SocketMsg(opCode, subCode, value); byte[] data = EncoderTool.EncodeMsg(msg); byte[] packet = EncoderTool.EnconderPacket(data); foreach (PlayerDto player in room.PlayerList) { if (user.IsOnLine(player.id)) //425 { ClientPeer client = user.GetClientById(player.id); if (client == exClient) { continue; } client.Send(packet); } } }
/// <summary> /// 处理收到的消息 /// </summary> private void ProcessReceive() { isProcessReceive = true; byte[] data = EncoderTool.DeconderPacket(ref dataCache); if (data == null) { isProcessReceive = false; return; } //TODO 需要再次转成一个具体的类型供使用 SocketMsg msg = EncoderTool.DeCodeMsg(data); //存储消息等待处理 socketMsgQueue.Enqueue(msg); //尾递归 ProcessReceive(); }