首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与MQTTnet云的HiveMQ连接问题

与MQTTnet云的HiveMQ连接问题
EN

Stack Overflow用户
提问于 2021-12-16 17:37:50
回答 2查看 798关注 0票数 0

我是MQTT世界的新手,我正在尝试创建一个连接到.Net云代理的HiveMQ 5.0应用程序。

我已经创建了一个免费的代理,并且我能够用HiveMQ Websocket客户端连接到它。

这是我主人的截图。

我已经为主机创建了MQTT凭据,并且能够通过示例客户机进行连接。这是那个客户的截图。

这样做,我可以发布和订阅消息队列。

然而,现在我正试图把它翻译成c#,而且我无法连接。我从这个示例项目开始:https://github.com/rafiulgits/mqtt-client-dotnet-core

然后插入集群实例中的值,但在启动时连接超时。

下面是我的服务配置:

代码语言:javascript
复制
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;
}

我不知道我哪里出了问题,任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2021-12-16 17:46:55

您似乎试图连接到代码中的WebSocket端点(端口8884),而我怀疑您确实应该使用正常的TLS端点(端口8883)。

此外,如果希望同时连接两个客户端,则需要使用不同的客户端值,因为进行匹配将意味着客户端将不断地从代理中启动。

(编辑:仔细观察,客户机in实际上是不同的,但只在最后一个字符中)

票数 2
EN

Stack Overflow用户

发布于 2022-05-13 09:57:27

我两天前就遇到了这个问题,似乎是来自TLS的自白/设置。顺便说一下,我的Startup.cs服务注入和一些配置与您的相同。我有.NetCore应用程序,我正在尝试连接我自己的hivemq (云端)。

在这种情况下,我们需要向mqtt客户端选项构建阶段添加额外的选项。

当我添加这段代码时,问题就消失了.

代码语言:javascript
复制
.WithTls();

这里的是客户端选项代码的一部分,应该像那样

代码语言:javascript
复制
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;

我们可以认为这是另一种解决办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70383354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档