using System; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using MQTTnet.AspNetCore; using MQTTnet.Core.Server; namespace MQTTnet.AspnetCore { public static class ApplicationBuilderExtensions { public static IApplicationBuilder UseMqttEndpoint(this IApplicationBuilder app, string path = "/mqtt") { app.UseWebSockets(); app.Use(async (context, next) => { if (context.Request.Path == path && context.WebSockets.IsWebSocketRequest) { var adapter = app.ApplicationServices.GetRequiredService(); using (var webSocket = await context.WebSockets.AcceptWebSocketAsync("mqtt")) { await adapter.AcceptWebSocketAsync(webSocket); } } else { await next(); } }); return app; } public static IApplicationBuilder UseMqttServer(this IApplicationBuilder app, Action configure) { var server = app.ApplicationServices.GetRequiredService(); configure(server); return app; } } }