实例介绍
MQTTnet是一个高性能的.NET库,用于基于MQTT的通信。它提供了一个MQTT客户端和一个MQTT服务器(代理),并支持MQTT协议的5个版本。它兼容几乎所有支持的.NET Framework版本和CPU架构。
特点:
通用:
- 异步支持
- 客户端和服务器的TLS支持(但不支持UWP服务器)
- 可扩展的通信通道(例如内存、TCP、TCP TLS、WS)
- 轻量级(仅实现了MQTT的底层,没有额外开销)
- 性能优化(处理约150,000条消息/秒)*
- 在所有支持的MQTT协议版本上统一的API
- 访问内部跟踪消息
- 单元测试(约636个测试)
- 无外部依赖
* 在本地计算机(Intel i7 8700K)上进行测试,使用TCP通道在同一进程中运行MQTTnet客户端和服务器。验证应用程序是此存储库的一部分,并存储在/Tests/MQTTnet.TestApp.NetCore中。
客户端:
- 支持通过TCP( TLS)或WS(WebSocket)进行通信
- 包含具有低级功能的核心LowLevelMqttClient
- 还包括ManagedMqttClient,具有更高级别的功能
【实例截图】
【核心代码】
文件清单
└── MQTTnet-7f5c437c46dd52ecb1d53dfc8ea9fb8ff46caf5d
├── CODE-OF-CONDUCT.md
├── Images
│ ├── icon_256.png
│ ├── icon_512.png
│ ├── icon_64.png
│ ├── icon_det_256.png
│ ├── icon_det_512.png
│ ├── icon_det_64.png
│ ├── Logo_128x128.png
│ ├── MQTT.svg
│ └── nuget.png
├── LICENSE
├── MQTTnet.sln
├── MQTTnet.sln.DotSettings
├── README.md
├── Samples
│ ├── Client
│ │ ├── Client_Connection_Samples.cs
│ │ ├── Client_Publish_Samples.cs
│ │ └── Client_Subscribe_Samples.cs
│ ├── Diagnostics
│ │ ├── Logger_Samples.cs
│ │ └── PackageInspection_Samples.cs
│ ├── Helpers
│ │ └── ObjectExtensions.cs
│ ├── ManagedClient
│ │ ├── Managed_Client_Simple_Samples.cs
│ │ └── Managed_Client_Subscribe_Samples.cs
│ ├── MQTTnet.Samples.csproj
│ ├── Program.cs
│ ├── RpcClient
│ │ └── RpcClient_Samples.cs
│ └── Server
│ ├── Server_ASP_NET_Samples.cs
│ ├── Server_Diagnostics_Samples.cs
│ ├── Server_Intercepting_Samples.cs
│ ├── Server_Retained_Messages_Samples.cs
│ ├── Server_Simple_Samples.cs
│ └── Server_TLS_Samples.cs
└── Source
├── MQTTnet
│ ├── Adapter
│ │ ├── IMqttChannelAdapter.cs
│ │ ├── IMqttClientAdapterFactory.cs
│ │ ├── IMqttServerAdapter.cs
│ │ ├── MqttChannelAdapter.cs
│ │ ├── MqttConnectingFailedException.cs
│ │ ├── MqttPacketInspector.cs
│ │ └── ReceivedMqttPacket.cs
│ ├── Certificates
│ │ ├── BlobCertificateProvider.cs
│ │ ├── ICertificateProvider.cs
│ │ └── X509CertificateProvider.cs
│ ├── Channel
│ │ └── IMqttChannel.cs
│ ├── Client
│ │ ├── Connecting
│ │ │ ├── MqttClientConnectedEventArgs.cs
│ │ │ ├── MqttClientConnectingEventArgs.cs
│ │ │ ├── MqttClientConnectResultCode.cs
│ │ │ ├── MqttClientConnectResult.cs
│ │ │ └── MqttClientConnectResultFactory.cs
│ │ ├── Disconnecting
│ │ │ ├── MqttClientDisconnectedEventArgs.cs
│ │ │ ├── MqttClientDisconnectOptionsBuilder.cs
│ │ │ ├── MqttClientDisconnectOptions.cs
│ │ │ ├── MqttClientDisconnectOptionsReason.cs
│ │ │ ├── MqttClientDisconnectOptionsValidator.cs
│ │ │ └── MqttClientDisconnectReason.cs
│ │ ├── Exceptions
│ │ │ ├── MqttClientDisconnectedException.cs
│ │ │ └── MqttClientUnexpectedDisconnectReceivedException.cs
│ │ ├── ExtendedAuthenticationExchange
│ │ │ ├── IMqttExtendedAuthenticationExchangeHandler.cs
│ │ │ ├── MqttExtendedAuthenticationExchangeContext.cs
│ │ │ └── MqttExtendedAuthenticationExchangeData.cs
│ │ ├── IMqttClient.cs
│ │ ├── Internal
│ │ │ ├── MqttClientEvents.cs
│ │ │ └── MqttClientResultFactory.cs
│ │ ├── MqttClientConnectionStatus.cs
│ │ ├── MqttClient.cs
│ │ ├── MqttClientExtensions.cs
│ │ ├── MqttPacketIdentifierProvider.cs
│ │ ├── Options
│ │ │ ├── DefaultMqttCertificatesProvider.cs
│ │ │ ├── IMqttClientCertificatesProvider.cs
│ │ │ ├── IMqttClientChannelOptions.cs
│ │ │ ├── IMqttClientCredentialsProvider.cs
│ │ │ ├── MqttClientCertificateValidationEventArgs.cs
│ │ │ ├── MqttClientCredentials.cs
│ │ │ ├── MqttClientDefaultCertificateValidationHandler.cs
│ │ │ ├── MqttClientOptionsBuilder.cs
│ │ │ ├── MqttClientOptionsBuilderTlsParameters.cs
│ │ │ ├── MqttClientOptionsBuilderWebSocketParameters.cs
│ │ │ ├── MqttClientOptions.cs
│ │ │ ├── MqttClientOptionsValidator.cs
│ │ │ ├── MqttClientTcpOptions.cs
│ │ │ ├── MqttClientTlsOptionsBuilder.cs
│ │ │ ├── MqttClientTlsOptions.cs
│ │ │ ├── MqttClientWebSocketOptionsBuilder.cs
│ │ │ ├── MqttClientWebSocketOptions.cs
│ │ │ ├── MqttClientWebSocketProxyOptionsBuilder.cs
│ │ │ └── MqttClientWebSocketProxyOptions.cs
│ │ ├── Publishing
│ │ │ ├── MqttClientPublishReasonCode.cs
│ │ │ ├── MqttClientPublishResult.cs
│ │ │ └── MqttClientPublishResultFactory.cs
│ │ ├── Receiving
│ │ │ ├── MqttApplicationMessageReceivedEventArgs.cs
│ │ │ └── MqttApplicationMessageReceivedReasonCode.cs
│ │ ├── Subscribing
│ │ │ ├── MqttClientSubscribeOptionsBuilder.cs
│ │ │ ├── MqttClientSubscribeOptions.cs
│ │ │ ├── MqttClientSubscribeOptionsValidator.cs
│ │ │ ├── MqttClientSubscribeResultCode.cs
│ │ │ ├── MqttClientSubscribeResult.cs
│ │ │ ├── MqttClientSubscribeResultFactory.cs
│ │ │ └── MqttClientSubscribeResultItem.cs
│ │ └── Unsubscribing
│ │ ├── MqttClientUnsubscribeOptionsBuilder.cs
│ │ ├── MqttClientUnsubscribeOptions.cs
│ │ ├── MqttClientUnsubscribeOptionsValidator.cs
│ │ ├── MqttClientUnsubscribeResultCode.cs
│ │ ├── MqttClientUnsubscribeResult.cs
│ │ ├── MqttClientUnsubscribeResultFactory.cs
│ │ └── MqttClientUnsubscribeResultItem.cs
│ ├── Diagnostics
│ │ ├── Logger
│ │ │ ├── IMqttNetLogger.cs
│ │ │ ├── MqttNetEventLogger.cs
│ │ │ ├── MqttNetLogLevel.cs
│ │ │ ├── MqttNetLogMessage.cs
│ │ │ ├── MqttNetLogMessagePublishedEventArgs.cs
│ │ │ ├── MqttNetNullLogger.cs
│ │ │ ├── MqttNetSourceLogger.cs
│ │ │ └── MqttNetSourceLoggerExtensions.cs
│ │ ├── PacketInspection
│ │ │ ├── InspectMqttPacketEventArgs.cs
│ │ │ └── MqttPacketFlowDirection.cs
│ │ └── Runtime
│ │ └── TargetFrameworkProvider.cs
│ ├── Exceptions
│ │ ├── MqttClientNotConnectedException.cs
│ │ ├── MqttCommunicationException.cs
│ │ ├── MqttCommunicationTimedOutException.cs
│ │ ├── MqttConfigurationException.cs
│ │ └── MqttProtocolViolationException.cs
│ ├── Formatter
│ │ ├── IMqttPacketFormatter.cs
│ │ ├── MqttApplicationMessageFactory.cs
│ │ ├── MqttBufferReader.cs
│ │ ├── MqttBufferWriter.cs
│ │ ├── MqttConnAckPacketFactory.cs
│ │ ├── MqttConnectPacketFactory.cs
│ │ ├── MqttConnectReasonCodeConverter.cs
│ │ ├── MqttDisconnectPacketFactory.cs
│ │ ├── MqttFixedHeader.cs
│ │ ├── MqttPacketBuffer.cs
│ │ ├── MqttPacketFactories.cs
│ │ ├── MqttPacketFormatterAdapter.cs
│ │ ├── MqttProtocolVersion.cs
│ │ ├── MqttPubAckPacketFactory.cs
│ │ ├── MqttPubCompPacketFactory.cs
│ │ ├── MqttPublishPacketFactory.cs
│ │ ├── MqttPubRecPacketFactory.cs
│ │ ├── MqttPubRelPacketFactory.cs
│ │ ├── MqttSubAckPacketFactory.cs
│ │ ├── MqttSubscribePacketFactory.cs
│ │ ├── MqttUnsubAckPacketFactory.cs
│ │ ├── MqttUnsubscribePacketFactory.cs
│ │ ├── ReadFixedHeaderResult.cs
│ │ ├── V3
│ │ │ └── MqttV3PacketFormatter.cs
│ │ └── V5
│ │ ├── MqttV5PacketDecoder.cs
│ │ ├── MqttV5PacketEncoder.cs
│ │ ├── MqttV5PacketFormatter.cs
│ │ ├── MqttV5PropertiesReader.cs
│ │ └── MqttV5PropertiesWriter.cs
│ ├── Implementations
│ │ ├── CrossPlatformSocket.cs
│ │ ├── MqttClientAdapterFactory.cs
│ │ ├── MqttTcpChannel.cs
│ │ ├── MqttTcpChannel.Uwp.cs
│ │ ├── MqttTcpServerAdapter.cs
│ │ ├── MqttTcpServerAdapter.Uwp.cs
│ │ ├── MqttTcpServerListener.cs
│ │ └── MqttWebSocketChannel.cs
│ ├── Internal
│ │ ├── AsyncEvent.cs
│ │ ├── AsyncEventInvocator.cs
│ │ ├── AsyncLock.cs
│ │ ├── AsyncQueue.cs
│ │ ├── AsyncQueueDequeueResult.cs
│ │ ├── AsyncSignal.cs
│ │ ├── AsyncTaskCompletionSource.cs
│ │ ├── BlockingQueue.cs
│ │ ├── CancellationTokenSourceExtensions.cs
│ │ ├── CompletedTask.cs
│ │ ├── Disposable.cs
│ │ ├── EmptyBuffer.cs
│ │ ├── MqttMemoryHelper.cs
│ │ ├── MqttPacketBus.cs
│ │ ├── MqttPacketBusItem.cs
│ │ ├── MqttPacketBusPartition.cs
│ │ └── TaskExtensions.cs
│ ├── LowLevelClient
│ │ ├── ILowLevelMqttClient.cs
│ │ └── LowLevelMqttClient.cs
│ ├── MqttApplicationMessageBuilder.cs
│ ├── MqttApplicationMessage.cs
│ ├── MqttApplicationMessageExtensions.cs
│ ├── MqttApplicationMessageValidator.cs
│ ├── MqttFactory.cs
│ ├── MQTTnet.csproj
│ ├── MQTTnet.csproj.DotSettings
│ ├── MqttTopicFilterBuilder.cs
│ ├── MqttTopicFilterComparer.cs
│ ├── MqttTopicFilterCompareResult.cs
│ ├── PacketDispatcher
│ │ ├── IMqttPacketAwaitable.cs
│ │ ├── MqttPacketAwaitable.cs
│ │ ├── MqttPacketAwaitableFilter.cs
│ │ └── MqttPacketDispatcher.cs
│ ├── Packets
│ │ ├── MqttAuthPacket.cs
│ │ ├── MqttConnAckPacket.cs
│ │ ├── MqttConnectPacket.cs
│ │ ├── MqttDisconnectPacket.cs
│ │ ├── MqttPacket.cs
│ │ ├── MqttPacketExtensions.cs
│ │ ├── MqttPacketWithIdentifier.cs
│ │ ├── MqttPingReqPacket.cs
│ │ ├── MqttPingRespPacket.cs
│ │ ├── MqttPubAckPacket.cs
│ │ ├── MqttPubCompPacket.cs
│ │ ├── MqttPublishPacket.cs
│ │ ├── MqttPubRecPacket.cs
│ │ ├── MqttPubRelPacket.cs
│ │ ├── MqttSubAckPacket.cs
│ │ ├── MqttSubscribePacket.cs
│ │ ├── MqttTopicFilter.cs
│ │ ├── MqttUnsubAckPacket.cs
│ │ ├── MqttUnsubscribePacket.cs
│ │ └── MqttUserProperty.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Protocol
│ │ ├── MqttAuthenticateReasonCode.cs
│ │ ├── MqttConnectReasonCode.cs
│ │ ├── MqttConnectReturnCode.cs
│ │ ├── MqttControlPacketType.cs
│ │ ├── MqttDisconnectReasonCode.cs
│ │ ├── MqttPayloadFormatIndicator.cs
│ │ ├── MqttPorts.cs
│ │ ├── MqttPropertyId.cs
│ │ ├── MqttPubAckReasonCode.cs
│ │ ├── MqttPubCompReasonCode.cs
│ │ ├── MqttPubRecReasonCode.cs
│ │ ├── MqttPubRelReasonCode.cs
│ │ ├── MqttQualityOfServiceLevel.cs
│ │ ├── MqttRetainHandling.cs
│ │ ├── MqttSubscribeReasonCode.cs
│ │ ├── MqttSubscribeReturnCode.cs
│ │ ├── MqttTopicValidator.cs
│ │ └── MqttUnsubscribeReasonCode.cs
│ └── Server
│ ├── Disconnecting
│ │ ├── MqttServerClientDisconnectOptionsBuilder.cs
│ │ └── MqttServerClientDisconnectOptions.cs
│ ├── Events
│ │ ├── ApplicationMessageEnqueuedEventArgs.cs
│ │ ├── ApplicationMessageNotConsumedEventArgs.cs
│ │ ├── ClientAcknowledgedPublishPacketEventArgs.cs
│ │ ├── ClientConnectedEventArgs.cs
│ │ ├── ClientDisconnectedEventArgs.cs
│ │ ├── ClientSubscribedTopicEventArgs.cs
│ │ ├── ClientUnsubscribedTopicEventArgs.cs
│ │ ├── InterceptingClientApplicationMessageEnqueueEventArgs.cs
│ │ ├── InterceptingPacketEventArgs.cs
│ │ ├── InterceptingPublishEventArgs.cs
│ │ ├── InterceptingSubscriptionEventArgs.cs
│ │ ├── InterceptingUnsubscriptionEventArgs.cs
│ │ ├── LoadingRetainedMessagesEventArgs.cs
│ │ ├── PreparingSessionEventArgs.cs
│ │ ├── QueueMessageOverwrittenEventArgs.cs
│ │ ├── RetainedMessageChangedEventArgs.cs
│ │ ├── SessionDeletedEventArgs.cs
│ │ └── ValidatingConnectionEventArgs.cs
│ ├── InjectedMqttApplicationMessage.cs
│ ├── Internal
│ │ ├── CheckSubscriptionsResult.cs
│ │ ├── DispatchApplicationMessageResult.cs
│ │ ├── EnqueueDataPacketResult.cs
│ │ ├── ISubscriptionChangedNotification.cs
│ │ ├── MqttClient.cs
│ │ ├── MqttClientSessionsManager.cs
│ │ ├── MqttClientStatistics.cs
│ │ ├── MqttClientSubscriptionsManager.cs
│ │ ├── MqttRetainedMessagesManager.cs
│ │ ├── MqttServerEventContainer.cs
│ │ ├── MqttServerKeepAliveMonitor.cs
│ │ ├── MqttSession.cs
│ │ ├── MqttSessionsStorage.cs
│ │ ├── MqttSubscription.cs
│ │ ├── MqttTopicHash.cs
│ │ ├── SubscribeResult.cs
│ │ ├── TopicHashMaskSubscriptions.cs
│ │ └── UnsubscribeResult.cs
│ ├── MqttClientDisconnectType.cs
│ ├── MqttRetainedMessageMatch.cs
│ ├── MqttServer.cs
│ ├── MqttServerExtensions.cs
│ ├── Options
│ │ ├── IMqttServerCertificateCredentials.cs
│ │ ├── MqttPendingMessagesOverflowStrategy.cs
│ │ ├── MqttServerCertificateCredentials.cs
│ │ ├── MqttServerKeepAliveOptions.cs
│ │ ├── MqttServerOptionsBuilder.cs
│ │ ├── MqttServerOptions.cs
│ │ ├── MqttServerTcpEndpointBaseOptions.cs
│ │ ├── MqttServerTcpEndpointOptions.cs
│ │ └── MqttServerTlsTcpEndpointOptions.cs
│ ├── PublishResponse.cs
│ ├── Status
│ │ ├── MqttClientStatus.cs
│ │ ├── MqttClientStatusExtensions.cs
│ │ └── MqttSessionStatus.cs
│ ├── Stopping
│ │ ├── MqttServerStopOptionsBuilder.cs
│ │ └── MqttServerStopOptions.cs
│ ├── SubscribeResponse.cs
│ └── UnsubscribeResponse.cs
├── MQTTnet.AspnetCore
│ ├── ApplicationBuilderExtensions.cs
│ ├── AspNetMqttServerOptionsBuilder.cs
│ ├── Client
│ │ ├── MqttClientConnectionContextFactory.cs
│ │ └── Tcp
│ │ ├── BufferExtensions.cs
│ │ ├── DuplexPipe.cs
│ │ ├── SocketAwaitable.cs
│ │ ├── SocketConnection.cs
│ │ ├── SocketReceiver.cs
│ │ └── SocketSender.cs
│ ├── ConnectionBuilderExtensions.cs
│ ├── ConnectionRouteBuilderExtensions.cs
│ ├── EndpointRouterExtensions.cs
│ ├── MqttConnectionContext.cs
│ ├── MqttConnectionHandler.cs
│ ├── MqttHostedServer.cs
│ ├── MQTTnet.AspNetCore.csproj
│ ├── MqttSubProtocolSelector.cs
│ ├── MqttWebSocketServerAdapter.cs
│ ├── ReaderExtensions.cs
│ └── ServiceCollectionExtensions.cs
├── MQTTnet.AspNetCore.Tests
│ ├── Mockups
│ │ ├── ConnectionHandlerMockup.cs
│ │ ├── DuplexPipeMockup.cs
│ │ ├── LimitedMemoryPool.cs
│ │ └── MemoryOwner.cs
│ ├── MqttConnectionContextTest.cs
│ ├── MQTTnet.AspNetCore.Tests.csproj
│ └── ReaderExtensionsTest.cs
├── MQTTnet.AspTestApp
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ ├── libman.json
│ ├── MQTTnet.AspTestApp.csproj
│ ├── Pages
│ │ ├── Index.cshtml
│ │ ├── Index.cshtml.cs
│ │ ├── Shared
│ │ │ └── _Layout.cshtml
│ │ ├── _ViewImports.cshtml
│ │ └── _ViewStart.cshtml
│ └── Program.cs
├── MQTTnet.Benchmarks
│ ├── AsyncLockBenchmark.cs
│ ├── BaseBenchmark.cs
│ ├── ChannelAdapterBenchmark.cs
│ ├── LoggerBenchmark.cs
│ ├── MemoryCopyBenchmark.cs
│ ├── MessageDeliveryBenchmark.cs
│ ├── MessageProcessingBenchmark.cs
│ ├── MessageProcessingMqttConnectionContextBenchmark.cs
│ ├── MqttBufferReaderBenchmark.cs
│ ├── MQTTnet.Benchmarks.csproj
│ ├── MqttPacketReaderWriterBenchmark.cs
│ ├── MqttTcpChannelBenchmark.cs
│ ├── Program.cs
│ ├── ReaderExtensionsBenchmark.cs
│ ├── RoundtripProcessingBenchmark.cs
│ ├── SendPacketAsyncBenchmark.cs
│ ├── SerializerBenchmark.cs
│ ├── ServerProcessingBenchmark.cs
│ ├── SubscribeBenchmark.cs
│ ├── TcpPipesBenchmark.cs
│ ├── TopicFilterComparerBenchmark.cs
│ ├── TopicGenerator.cs
│ └── UnsubscribeBenchmark.cs
├── MQTTnet.Extensions.ManagedClient
│ ├── ApplicationMessageProcessedEventArgs.cs
│ ├── ApplicationMessageSkippedEventArgs.cs
│ ├── ConnectingFailedEventArgs.cs
│ ├── IManagedMqttClient.cs
│ ├── IManagedMqttClientStorage.cs
│ ├── InterceptingPublishMessageEventArgs.cs
│ ├── ManagedMqttApplicationMessageBuilder.cs
│ ├── ManagedMqttApplicationMessage.cs
│ ├── ManagedMqttClient.cs
│ ├── ManagedMqttClientExtensions.cs
│ ├── ManagedMqttClientOptionsBuilder.cs
│ ├── ManagedMqttClientOptions.cs
│ ├── ManagedMqttClientStorageManager.cs
│ ├── ManagedProcessFailedEventArgs.cs
│ ├── MqttFactoryExtensions.cs
│ ├── MQTTnet.Extensions.ManagedClient.csproj
│ ├── ReconnectionResult.cs
│ ├── SendSubscribeUnsubscribeResult.cs
│ └── SubscriptionsChangedEventArgs.cs
├── MQTTnet.Extensions.Rpc
│ ├── IMqttRpcClient.cs
│ ├── MqttFactoryExtensions.cs
│ ├── MQTTnet.Extensions.Rpc.csproj
│ ├── MQTTnet.Extensions.Rpc.csproj.DotSettings
│ ├── MqttRpcClient.cs
│ ├── MqttRpcClientExtensions.cs
│ ├── Options
│ │ ├── MqttRpcClientOptionsBuilder.cs
│ │ ├── MqttRpcClientOptions.cs
│ │ ├── MqttRpcTopicPair.cs
│ │ └── TopicGeneration
│ │ ├── DefaultMqttRpcClientTopicGenerationStrategy.cs
│ │ ├── IMqttRpcClientTopicGenerationStrategy.cs
│ │ └── TopicGenerationContext.cs
│ └── SampleCCode.c
├── MQTTnet.Extensions.WebSocket4Net
│ ├── MqttFactoryExtensions.cs
│ ├── MQTTnet.Extensions.WebSocket4Net.csproj
│ ├── WebSocket4NetMqttChannel.cs
│ └── WebSocket4NetMqttClientAdapterFactory.cs
├── MQTTnet.TestApp
│ ├── AsyncLockTest.cs
│ ├── ClientFlowTest.cs
│ ├── ClientTest.cs
│ ├── ManagedClientTest.cs
│ ├── MessageThroughputTest.cs
│ ├── MqttNetConsoleLogger.cs
│ ├── MQTTnet.TestApp.csproj
│ ├── PerformanceTest.cs
│ ├── Program.cs
│ ├── PublicBrokerTest.cs
│ ├── ServerAndClientTest.cs
│ ├── ServerTest.cs
│ └── TopicGenerator.cs
└── MQTTnet.Tests
├── BaseTestClass.cs
├── Clients
│ ├── LowLevelMqttClient
│ │ └── LowLevelMqttClient_Tests.cs
│ ├── ManagedMqttClient
│ │ └── ManagedMqttClient_Tests.cs
│ ├── MqttClient
│ │ ├── MqttClient_Connection_Tests.cs
│ │ └── MqttClient_Tests.cs
│ └── MqttClientOptionsBuilder_Tests.cs
├── Diagnostics
│ ├── Logger_Tests.cs
│ ├── PacketInspection_Tests.cs
│ └── SourceLogger_Tests.cs
├── Extensions
│ ├── Rpc_Tests.cs
│ └── WebSocket4Net_Tests.cs
├── Factory
│ └── MqttFactory_Tests.cs
├── Formatter
│ ├── MqttBufferReader_Tests.cs
│ ├── MqttPacketSerialization_V3_Binary_Tests.cs
│ ├── MqttPacketSerialization_V3_Tests.cs
│ ├── MqttPacketSerialization_V5_Tests.cs
│ └── MqttPacketWriter_Tests.cs
├── Helpers
│ ├── MqttClientExtensions.cs
│ ├── MqttPacketWriterExtensions.cs
│ └── ReflectionExtensions.cs
├── Internal
│ ├── AsyncEvent_Tests.cs
│ ├── AsyncLock_Tests.cs
│ ├── AsyncQueue_Tests.cs
│ ├── AsyncSignal_Tests.cs
│ ├── BlockingQueue_Tests.cs
│ ├── CrossPlatformSocket_Tests.cs
│ ├── MqttPacketBusItem_Tests.cs
│ └── MqttPacketBus_Tests.cs
├── Mockups
│ ├── MemoryMqttChannel.cs
│ ├── TestApplicationMessageReceivedHandler.cs
│ ├── TestEnvironment.cs
│ └── TestLogger.cs
├── MqttApplicationMessageBuilder_Tests.cs
├── MqttApplicationMessageTest.cs
├── MqttApplicationMessageValidator_Tests.cs
├── MqttClientOptionsValidator_Tests.cs
├── MQTTnet.Tests.csproj
├── MqttPacketIdentifierProvider_Tests.cs
├── MqttPacketSerializationHelper.cs
├── MqttPacketWriter_Tests.cs
├── MqttTcpChannel_Tests.cs
├── MqttTopicValidatorSubscribe_Tests.cs
├── MqttTopicValidator_Tests.cs
├── MQTTv5
│ ├── Client_Tests.cs
│ └── Server_Tests.cs
├── Protocol_Tests.cs
├── RoundtripTime_Tests.cs
├── Server
│ ├── Assigned_Client_ID_Tests.cs
│ ├── Connection_Tests.cs
│ ├── Cross_Version_Tests.cs
│ ├── Events_Tests.cs
│ ├── General.cs
│ ├── HotSwapCerts_Tests.cs
│ ├── Injection_Tests.cs
│ ├── Keep_Alive_Tests.cs
│ ├── Load_Tests.cs
│ ├── MqttRetainedMessageManager_Tests.cs
│ ├── MqttSubscriptionsManager_Tests.cs
│ ├── No_Local_Tests.cs
│ ├── Publishing_Tests.cs
│ ├── QoS_Tests.cs
│ ├── Retain_As_Published_Tests.cs
│ ├── Retained_Messages_Tests.cs
│ ├── Retain_Handling_Tests.cs
│ ├── Security_Tests.cs
│ ├── Server_Reference_Tests.cs
│ ├── Session_Tests.cs
│ ├── Shared_Subscriptions_Tests.cs
│ ├── Status_Tests.cs
│ ├── Subscribe_Tests.cs
│ ├── Subscription_Identifier_Tests.cs
│ ├── Subscription_TopicHash_Tests.cs
│ ├── Tls_Tests.cs
│ ├── Topic_Alias_Tests.cs
│ ├── Unsubscribe_Tests.cs
│ ├── User_Properties_Tests.cs
│ ├── Wildcard_Subscription_Available_Tests.cs
│ └── Will_Tests.cs
├── TopicFilterComparer_Tests.cs
└── TopicGenerator.cs
76 directories, 477 files
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论