protected override async Task OnNetworkReceive(NetPeer peer, NetPacketReader reader, PacketType type)
        {
            switch (type)
            {
            case PacketType.sendRequest:
                // 交给上层处理
                var result = OperationResultExt.ParseRequest(reader);
                await invokeOnReceive(result.clientID, result.obj);

                // 转发给其他客户端
                var peers = _playerInfoDict.Select(p => p.Value.peer).ToArray();
                this.SendRequest(peers, result.clientID, result.requestID, result.obj);
                return;

            default:
                break;
            }
            await base.OnNetworkReceive(peer, reader, type);
        }
        protected override async Task OnNetworkReceive(NetPeer peer, NetPacketReader reader, PacketType type)
        {
            switch (type)
            {
            case PacketType.sendResponse:
                try
                {
                    var result = OperationResultExt.ParseRequest(reader);
                    log?.logTrace($"客户端 {name} 收到主机转发的来自客户端{result.clientID}的数据:({result.obj})");

                    await invokeOnReceive(result.clientID, result.obj);

                    if (result.clientID == clientID)
                    {
                        var op = getOperation(result.requestID);
                        if (op != null)
                        {
                            completeOperation(op, result.obj);
                            log?.logTrace($"客户端 {name}:{clientID} 收到客户端{peer.Id}的消息反馈{result.requestID}为{result.obj.ToJson()}");
                        }
                        else
                        {
                            log?.log($"客户端 {name}:{clientID} 收到客户端{peer.Id}未发送或超时的消息反馈{result.requestID}");
                        }
                    }
                }
                catch (Exception e)
                {
                    log?.logError("接收消息回应发生异常:" + e);
                }
                break;

            default:
                break;
            }

            await base.OnNetworkReceive(peer, reader, type);
        }