stevenjin 2024-01-10 10:13 采纳率: 98.2%
浏览 22
已结题

mqtt.net服务订阅topic失败

1.mqtt.net在调试时,发现工具订阅topic不上
2.调试后发现,在订阅第1台时,可及时响应订阅事件,但后面那台,并没有响应到Subscribed这个事件中来
3.后面那台发送一直是正常的,运行的客户端有收到发布的消息。但MQTT服务运行后,用工具就订阅不上


static IMqttServer mqttServer;
 try
            {
                mqttServer = new MqttFactory().CreateMqttServer();
                MqttServerOptionsBuilder builder = new MqttServerOptionsBuilder()
                // .WithDefaultEndpointBoundIPAddress(System.Net.IPAddress.Any)//配置IP
                .WithDefaultEndpointBoundIPAddress(Dns.GetHostAddresses(192.168.0.11)      
                .WithDefaultEndpointPort(1883)
                .WithConnectionValidator(context =>
                {
                    if (context.Username == "admin" && context.Password == "123456")
                    {
                        context.ReasonCode = MQTTnet.Protocol.MqttConnectReasonCode.Success;
                    }
                    else
                    {
                        context.ReasonCode = MQTTnet.Protocol.MqttConnectReasonCode.BadUserNameOrPassword;
                    }
                });

                IMqttServerOptions options = builder.Build();

                mqttServer.ClientConnectedHandler = new MqttServerClientConnectedHandlerDelegate(Server_ClientConnected);

                ////服务启动事件
                mqttServer.StartedHandler = new MqttServerStartedHandlerDelegate(async (args) =>
                {
                    // await  Started(mqttServer, args);
                });
                ////服务停止事件
                mqttServer.StoppedHandler = new MqttServerStoppedHandlerDelegate(_mqttServer_StoppedAsync);
                ////客户端连接事件
                //server.ClientConnectedHandler = new MqttServerClientConnectedHandlerDelegate(Connected);
                mqttServer.ApplicationMessageReceivedHandler =
                    new MqttApplicationMessageReceivedHandlerDelegate(Server_ApplicationMessageReceived);
                ////客户端订阅Topic
                mqttServer.ClientSubscribedTopicHandler = new MqttServerClientSubscribedHandlerDelegate(Subscribed);
                ////客户端断开事件
                mqttServer.ClientDisconnectedHandler = new MqttServerClientDisconnectedHandlerDelegate(Server_Disconnected);

                ////客户端取消订阅Topic
                mqttServer.ClientUnsubscribedTopicHandler = new MqttServerClientUnsubscribedTopicHandlerDelegate(_mqttServer_ClientUnsubscribedTopicAsync);
                await mqttServer.StartAsync(options);

                //while (!stoppingToken.IsCancellationRequested)
                //{
                //    _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
                //    await Task.Delay(1000, stoppingToken);
                //}
            }
            catch (Exception ex)
            {
                Console.WriteLine("服务启动失败,请检查IP配置!" + ex.Message);
                NLogHelper.Error(ex.Message);
                Thread.Sleep(1000);
                _hostApplicationLifetime.StopApplication(); //手动调用 StopApplication  
            }

    /// <summary>
        /// 客户端订阅Topic
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        static async Task Subscribed(MqttServerClientSubscribedTopicEventArgs args)
        {
            try
            {
                Console.WriteLine($"{DateTime.Now.ToString()} 客户端【{args.ClientId}】订阅Topic {args.TopicFilter.Topic}");
            }
            catch (Exception e)
            {
                Console.WriteLine($"{DateTime.Now.ToString()} 客户端【{args.ClientId}】订阅Topic{args.TopicFilter.Topic}异常 ");
                Console.WriteLine(e);
            }
        }
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-10 12:04
    关注

    【相关推荐】




    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月21日
  • 已采纳回答 1月13日
  • 创建了问题 1月10日

悬赏问题

  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能