我是MQTT世界的新手,我正在尝试创建一个连接到.Net云代理的HiveMQ 5.0应用程序。
我已经创建了一个免费的代理,并且我能够用HiveMQ Websocket客户端连接到它。
这是我主人的截图。

我已经为主机创建了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;
}我不知道我哪里出了问题,任何帮助都将不胜感激。
发布于 2021-12-16 17:46:55
您似乎试图连接到代码中的WebSocket端点(端口8884),而我怀疑您确实应该使用正常的TLS端点(端口8883)。
此外,如果希望同时连接两个客户端,则需要使用不同的客户端值,因为进行匹配将意味着客户端将不断地从代理中启动。
(编辑:仔细观察,客户机in实际上是不同的,但只在最后一个字符中)
发布于 2022-05-13 09:57:27
我两天前就遇到了这个问题,似乎是来自TLS的自白/设置。顺便说一下,我的Startup.cs服务注入和一些配置与您的相同。我有.NetCore应用程序,我正在尝试连接我自己的hivemq (云端)。
在这种情况下,我们需要向mqtt客户端选项构建阶段添加额外的选项。
当我添加这段代码时,问题就消失了.
.WithTls();这里的是客户端选项代码的一部分,应该像那样
AddMqttClientServiceWithConfig(services,optionBuilder =>
{
var clientSettings = BrokerAppSettingsProvider.BrokerClientSettings;
var brokerHostSettings = BrokerAppSettingsProvider.BrokerHostSettings;
optionBuilder
.WithCredentials(clientSettings.UserName, clientSettings.Password)
.WithTls()
.WithTcpServer(brokerHostSettings.Host, brokerHostSettings.Port);
});
return services;我们可以认为这是另一种解决办法。
https://stackoverflow.com/questions/70383354
复制相似问题