我是 MQTT 世界的新手,我正在尝试创建一个连接到 HiveMQ 云代理的 .Net 5.0 应用程序。
我创建了一个免费代理,并且可以使用 HiveMQ Websocket Client 连接到它。
这是我的主机的屏幕截图。
我已经为主机创建了 MQTT 凭据,并且能够通过示例客户端进行连接。这是该客户端的屏幕截图。
这行得通,我可以发布和订阅消息队列。
但是,现在我正在尝试将其翻译为 c#,但我无法连接。我从这个示例项目开始:https ://github.com/rafiulgits/mqtt-client-dotnet-core
然后从我的集群实例中插入值,但我在启动时遇到连接超时。
这是我的服务配置的样子:
public static IServiceCollection AddMqttClientHostedService(this IServiceCollection services)
{
services.AddMqttClientServiceWithConfig(aspOptionBuilder =>
{
//var clientSettinigs = AppSettingsProvider.ClientSettings;
//var brokerHostSettings = AppSettingsProvider.BrokerHostSettings;
aspOptionBuilder
.WithCredentials("Test1", "xxxxx") //clientSettinigs.UserName, clientSettinigs.Password)
.WithClientId("clientId-jqE8uIw6Pp") //clientSettinigs.Id)
.WithTcpServer("xxxxxxxxxxxxxx.s2.eu.hivemq.cloud", 8884); //brokerHostSettings.Host, brokerHostSettings.Port);
});
return services;
}
private static IServiceCollection AddMqttClientServiceWithConfig(this IServiceCollection services, Action<AspCoreMqttClientOptionBuilder> configure)
{
services.AddSingleton<IMqttClientOptions>(serviceProvider =>
{
var optionBuilder = new AspCoreMqttClientOptionBuilder(serviceProvider);
configure(optionBuilder);
return optionBuilder.Build();
});
services.AddSingleton<MqttClientService>();
services.AddSingleton<IHostedService>(serviceProvider =>
{
return serviceProvider.GetService<MqttClientService>();
});
services.AddSingleton<MqttClientServiceProvider>(serviceProvider =>
{
var mqttClientService = serviceProvider.GetService<MqttClientService>();
var mqttClientServiceProvider = new MqttClientServiceProvider(mqttClientService);
return mqttClientServiceProvider;
});
return services;
}
我不确定我哪里出错了,任何帮助将不胜感激。