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); }