.net7中添加托管服务,支持Websocket的连接

1..net7添加托管服务,让MQTTNet支持 Websocket 的连接.
2.以下是net core的写法,在net7应该怎样写呢?


builder.ConfigureServices((hostingContext, services) =>
{
    services.Configure<KestrelServerOptions>(options =>
    {
        options.ListenAnyIP(1883, listenOptions =>
        {
            listenOptions.UseMqtt();
        });

        options.ListenAnyIP(5000);
    });
});

.NET 7在这方面的设计和.NET Core相似,依然可以使用Startup类中的ConfigureServices方法来配置服务。

首先,你需要安装适当的NuGet包。如果你还未安装MQTTnet.AspNetCore,可以使用以下命令进行安装
dotnet add package MQTTnet.AspNetCore

然后,你可以在ConfigureServices方法中添加MQTT服务和MQTT WebSocket服务,并在Configure方法中启用这些服务:

public void ConfigureServices(IServiceCollection services)
{
    services.AddHostedMqttServer(builder => builder
        .WithDefaultEndpointPort(1883)
        .WithDefaultEndpoint().WithDefaultEndpointBoundIPAddress(IPAddress.Any)
        .WithWebSocketEndpoint("/mqtt")
    );
    services.AddMqttWebSocketServerAdapter();
    services.AddMqttTcpServerAdapter();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapMqtt("/mqtt");
    });

    app.UseMqttServer(server =>
    {
        // Your MQTT server setup here
    });
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    问题标题: .NET 7中如何添加托管服务来支持Websocket连接?

    问题内容: 我需要在.NET 7中添加托管服务,以使MQTTNet支持Websocket连接。以下是在.NET Core的写法,我想知道在.NET 7应该如何编写。

    builder.ConfigureServices((hostingContext, services) =>
    {
        services.Configure<KestrelServerOptions>(options =>
        {
            options.ListenAnyIP(1883, listenOptions =>
            {
                listenOptions.UseMqtt();
            });
    
            options.ListenAnyIP(5000);
        });
    });
    

    改进后的问题: 我在.NET 7中使用MQTTNet时需要添加托管服务来支持Websocket连接。以下是在.NET Core的示例代码,我需要在.NET 7中对其进行适当的修改,请帮助我修改代码。

    builder.ConfigureServices((hostingContext, services) =>
    {
        services.Configure<KestrelServerOptions>(options =>
        {
            // 在这里添加您在.NET 7中设置Websocket连接的代码。
        });
    });
    

    请帮助我修改上述代码,以便我可以在.NET 7中正确设置Websocket连接。谢谢!

    回答如下: 在.NET 7中,你可以通过以下步骤来配置Websocket连接支持:

    1. 首先,确保你已经添加了MQTTNet NuGet包的最新版本。

    2. 然后,你需要在Startup.cs文件中的ConfigureServices方法内添加以下代码来设置Websocket连接:

    builder.ConfigureServices((hostingContext, services) =>
    {
        services.Configure<KestrelServerOptions>(options =>
        {
            options.ListenAnyIP(1883, listenOptions =>
            {
                listenOptions.UseMqtt();
            });
    
            options.ListenAnyIP(5000, listenOptions =>
            {
                listenOptions.UseWebSockets(); // 启用Websockets
                listenOptions.UseMqtt(); // 将其与Mqtt一起使用
            });
        });
    });
    

    以上代码中,我们使用options.ListenAnyIP(5000, listenOptions => ...)来指定监听的端口为5000,并使用UseWebSockets()方法来启用Websockets。然后我们再次使用UseMqtt()方法来将Websockets与Mqtt一起使用。

    这样就完成了在.NET 7中添加托管服务来支持Websocket连接的设置。

    希望对你有所帮助!如果还有其他问题,请随时提问。


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