标签: mqttnet

如何在没有Console.ReadLine()的情况下让BackgroundService任务接收mqtt消息

在我的 ASP.Net Core 6 应用程序中,名为 MqttClientService 的 BackgroundService 任务运行一个 MQTTNet 客户端,该客户端处理传入的 mqqt 消息并用消息进行响应以指示它已成功。

我已经从 MQTTNet 存储库获取了示例控制台应用程序来使用Console.ReadLine(),但这对于我的用例来说感觉就像是一种黑客攻击。有没有更好的方法来让BackgroundService处理传入的消息而不需要不断地重新启动?

一个使用 Asp.Net Core 和 MQTTNet 版本 3 的示例,但它使用由接口实现的句柄,而不是库现在使用的异步事件:MQTTNet 的升级指南

任何信息将不胜感激,谢谢。

Services/ 中的 MqttClientService.cs

using MQTTnet;
using MQTTnet.Client;
using System.Text;

namespace MqttClientAspNetCore.Services
{
    public class MqttClientService : BackgroundService
    {
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                await Handle_Received_Application_Message();
            }
        }

        public static async Task Handle_Received_Application_Message()
        {

            var mqttFactory = new MqttFactory();

            using (var mqttClient …
Run Code Online (Sandbox Code Playgroud)

c# mqtt asp.net-core mqttnet

3
推荐指数
1
解决办法
2313
查看次数

MqttNet - MQTT 客户端无法接收 MQTT 服务器发布的所有消息

当客户端订阅某个主题时,我从 MQTT 服务器发布 1000 条消息。MQTT 客户端未收到某些消息。这是一个错误还是我实施了错误?

以下是服务器和客户端配置示例。

服务器配置

using MQTTnet;
using MQTTnet.Server;
using System;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace MqttNetServerExample
{
    class Program
    {
        private static IMqttServer _mqttServer;

        static void Main(string[] args)
        {

            // Configure MQTT server.
            var optionsBuilder = new MqttServerOptionsBuilder().WithConnectionBacklog(100)
                                                               .WithDefaultEndpointPort(1884);

            // Define a mqttServer
            _mqttServer = new MqttFactory().CreateMqttServer();

            // Message arrived configuration
            _mqttServer.UseApplicationMessageReceivedHandler(async e =>
            {
                if (Encoding.UTF8.GetString(e.ApplicationMessage.Payload)== "Test Message")
                {
                    Console.WriteLine("subscription message received");
                    Console.WriteLine("Simulating messages...");
                    await Simulate();
                }
            });

            // When a new client …
Run Code Online (Sandbox Code Playgroud)

c# mqtt mqttnet

2
推荐指数
1
解决办法
7436
查看次数

标签 统计

c# ×2

mqtt ×2

mqttnet ×2

asp.net-core ×1