ttpsan550 2023-06-07 20:52 采纳率: 100%
浏览 59
已结题

关于aspnetcore中使用mqttnet库的entire

关于 MqttNet 库的使用问题,在github上 [https://github.com/dotnet/MQTTnet]下载源码,运行里面的 MQTTnet.AspTestApp 项目,
program

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

using MQTTnet;
using MQTTnet.AspNetCore;
using MQTTnet.Server;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();

// Setup MQTT stuff.
builder.Services.AddMqttServer(opt=>
{
    opt.WithDefaultEndpointPort(1883);                           //mqttServerOptionsBuilder.WithEncryptedEndpointPort(port);                        // 使用加密的端点端口
    opt.WithPersistentSessions(true);  // 持续会话
    opt.WithConnectionBacklog(2000);
});
builder.Services.AddConnections();
var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
}

app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

// Setup MQTT stuff.
app.UseEndpoints(endpoints =>
{
    endpoints.MapMqtt("/mqtt");
});

app.UseMqttServer(server =>
{
    
    server.StartedAsync += args =>
    {
        _ = Task.Run(async () =>
        {
            var mqttApplicationMessage = new MqttApplicationMessageBuilder()
                .WithPayload($"Test application message from MQTTnet server.")
                .WithTopic("message")
                .Build();

            while (true)
            {
                try
                {
                    await server.InjectApplicationMessage(new InjectedMqttApplicationMessage(mqttApplicationMessage)
                    {
                        SenderClientId = "server"
                    });
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
                finally
                {
                    await Task.Delay(TimeSpan.FromSeconds(5));
                }
            }
        });

        return Task.CompletedTask;
    };
});

app.Run();


基本上的官方源码例程, 客户端连接不起来,不知道是不是哪里没有配置好

img

  • 写回答

2条回答 默认 最新

  • wanghui0380 2023-06-08 09:17
    关注

    你的连接里面,官方的demo代码并不长成你贴的模样
    下面是官方的测试demo代码
    https://github.com/dotnet/MQTTnet/blob/master/Samples/Server/Server_ASP_NET_Samples.cs

    代码核心是“需要告诉aspnet core启动时同时监听1883端口”------这个其实是对tcp端的处理
    当然你可以直接用“ws://localhost:9914/mqtt”进行连接,这个才是ws的连接路径

    ps:mqtt通常默认端口
    tcp:1883
    ws:8083
    ssl tcp:1884,
    wss:8084

    所以你看得到他们是分开监听的,所以按你目前的代码,其实就是ws:9914

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-12 15:40
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这篇博客: C#MQTTNET服务端使用说明中的 2.当前我的项目安装的依赖如下 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
      1. MQTTnet 3.0.16 必要
      2. Microsoft.Extensions.Configuration 3.1.16
      3. Microsoft.Extensions.Configuration.Abstractions 3.1.16
      4. Microsoft.Extensions.Configuration.FileExtensions 3.1.16
      5. Microsoft.Extensions.Configuration.Json 3.1.16
      6. Newtonsoft.Json 13.0.1
      7. Microsoft.Extensions.Options.ConfigurationExtensions 3.1.16
    • 以下回答来自chatgpt:

      作为AI助手,我不确定您指的具体是哪一个问题,请您说明具体的问题细节,我将尽力帮您解答。如果您需要提供更具体错误信息或者现象描述,您可以查看系统日志或者相关的调试信息,也可以与其他相关开发人员交流并收集信息。同时,您可以提供使用的aspnetcore版本号以及MqttNet库版本号,方便对问题进行定位和解决。描述您的使用场景或需求也有助于我们更好地理解问题,并提供更好的解决方案。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月16日
  • 已采纳回答 6月8日
  • 赞助了问题酬金15元 6月7日
  • 创建了问题 6月7日

悬赏问题

  • ¥15 Matlab计算100000*100000的矩阵运算问题:
  • ¥50 VB6.0如何识别粘连的不规则的数字图片验证码
  • ¥16 需要完整的这份订单所有的代码,可以加钱
  • ¥30 写一个带界面控制的机房电脑一键开机关机并且实时监控的软件
  • ¥15 Stata数据分析请教
  • ¥15 请教如何为VS2022搭建 Debug|win32的openCV环境?
  • ¥15 关于#c++#的问题:c++如何使用websocketpp实现websocket接口调用,求示例代码和相关资料
  • ¥15 51单片机的外部中断,按下按键后不能切换到另一个模式
  • ¥15 java连接sqlserver有问题
  • ¥15 yolov8 如何调cfg参数