Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

MqttClientFactory.cs 1.0 KiB

123456789101112131415161718192021222324252627282930313233
  1. using System;
  2. using MQTTnet.Core.Adapter;
  3. using MQTTnet.Core.Channel;
  4. using MQTTnet.Core.Client;
  5. using MQTTnet.Core.Serializer;
  6. using MQTTnet.Implementations;
  7. namespace MQTTnet
  8. {
  9. public class MqttClientFactory : IMqttClientFactory
  10. {
  11. public IMqttClient CreateMqttClient(MqttClientOptions options)
  12. {
  13. if (options == null) throw new ArgumentNullException(nameof(options));
  14. return new MqttClient(options, new MqttChannelCommunicationAdapter(GetMqttCommunicationChannel(options), new MqttPacketSerializer()));
  15. }
  16. private static IMqttCommunicationChannel GetMqttCommunicationChannel(MqttClientOptions options)
  17. {
  18. switch (options.ConnectionType)
  19. {
  20. case MqttConnectionType.Tcp:
  21. return new MqttTcpChannel();
  22. case MqttConnectionType.Ws:
  23. return new MqttWebSocketChannel();
  24. default:
  25. throw new NotSupportedException();
  26. }
  27. }
  28. }
  29. }