static void ConfigureWebSocketEndpoint( IApplicationBuilder application, MqttServerService mqttServerService, MqttSettingsModel mqttSettings) { if (mqttSettings?.WebSocketEndPoint?.Enabled != true) { return; } if (string.IsNullOrEmpty(mqttSettings.WebSocketEndPoint.Path)) { return; } var webSocketOptions = new WebSocketOptions { KeepAliveInterval = TimeSpan.FromSeconds(mqttSettings.WebSocketEndPoint.KeepAliveInterval), ReceiveBufferSize = mqttSettings.WebSocketEndPoint.ReceiveBufferSize }; if (mqttSettings.WebSocketEndPoint.AllowedOrigins?.Any() == true) { webSocketOptions.AllowedOrigins.AddRange(mqttSettings.WebSocketEndPoint.AllowedOrigins); } application.UseWebSockets(webSocketOptions); application.Use(async(context, next) => { if (context.Request.Path == mqttSettings.WebSocketEndPoint.Path) { if (context.WebSockets.IsWebSocketRequest) { string subProtocol = null; if (context.Request.Headers.TryGetValue("Sec-WebSocket-Protocol", out var requestedSubProtocolValues)) { subProtocol = MqttSubProtocolSelector.SelectSubProtocol(requestedSubProtocolValues); } using (var webSocket = await context.WebSockets.AcceptWebSocketAsync(subProtocol).ConfigureAwait(false)) { await mqttServerService.RunWebSocketConnectionAsync(webSocket, context).ConfigureAwait(false); } } else { context.Response.StatusCode = (int)HttpStatusCode.BadRequest; } } else { await next().ConfigureAwait(false); } }); }
private static void ConfigureWebSocketEndpoint( IApplicationBuilder application, MqttServerService mqttServerService, SettingsModel settings) { if (settings?.WebSocketEndPoint?.Enabled != true) { return; } if (string.IsNullOrEmpty(settings.WebSocketEndPoint.Path)) { return; } var webSocketOptions = new WebSocketOptions { KeepAliveInterval = TimeSpan.FromSeconds(settings.WebSocketEndPoint.KeepAliveInterval), ReceiveBufferSize = settings.WebSocketEndPoint.ReceiveBufferSize }; if (settings.WebSocketEndPoint.AllowedOrigins?.Any() == true) { webSocketOptions.AllowedOrigins.AddRange(settings.WebSocketEndPoint.AllowedOrigins); } application.UseWebSockets(webSocketOptions); application.Use(async(context, next) => { if (context.Request.Path == settings.WebSocketEndPoint.Path) { if (context.WebSockets.IsWebSocketRequest) { using (var webSocket = await context.WebSockets.AcceptWebSocketAsync().ConfigureAwait(false)) { await mqttServerService.RunWebSocketConnectionAsync(webSocket, context).ConfigureAwait(false); } } else { context.Response.StatusCode = 400; } } else { await next().ConfigureAwait(false); } }); }
public void Configure( IApplicationBuilder application, IHostingEnvironment environment, MqttServerService mqttServerService, PythonScriptHostService pythonScriptHostService, DataSharingService dataSharingService, MqttSettingsModel mqttSettings) { if (environment.IsDevelopment()) { application.UseDeveloperExceptionPage(); } else { application.UseHsts(); } application.UseCors(x => x .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials()); application.UseAuthentication(); application.UseStaticFiles(); application.UseHttpsRedirection(); application.UseMvc(); ConfigureWebSocketEndpoint(application, mqttServerService, mqttSettings); dataSharingService.Configure(); pythonScriptHostService.Configure(); mqttServerService.Configure(); application.UseSwagger(o => o.RouteTemplate = "/api/{documentName}/swagger.json"); application.UseSwaggerUI(o => { o.RoutePrefix = "api"; o.DocumentTitle = "MQTTnet.Server API"; o.SwaggerEndpoint("/api/v1/swagger.json", "MQTTnet.Server API v1"); o.DisplayRequestDuration(); o.DocExpansion(DocExpansion.List); o.DefaultModelRendering(ModelRendering.Model); }); }
public void Configure( IApplicationBuilder application, MqttServerService mqttServerService, PythonScriptHostService pythonScriptHostService, DataSharingService dataSharingService, MqttSettingsModel mqttSettings) { application.UseDefaultFiles(); application.UseStaticFiles(); application.UseHsts(); application.UseRouting(); application.UseCors(x => x .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader()); application.UseAuthentication(); application.UseAuthorization(); application.UseEndpoints(endpoints => { endpoints.MapControllers(); }); ConfigureWebSocketEndpoint(application, mqttServerService, mqttSettings); dataSharingService.Configure(); pythonScriptHostService.Configure(); mqttServerService.Configure(); application.UseSwagger(o => o.RouteTemplate = "/api/{documentName}/swagger.json"); application.UseSwaggerUI(o => { o.RoutePrefix = "api"; o.DocumentTitle = "MQTTnet.Server API"; o.SwaggerEndpoint("/api/v1/swagger.json", "MQTTnet.Server API v1"); o.DisplayRequestDuration(); o.DocExpansion(DocExpansion.List); o.DefaultModelRendering(ModelRendering.Model); }); }
public void Configure( IApplicationBuilder application, MqttServerService mqttServerService, MqttSettingsModel mqttSettings) { application.UseDefaultFiles(); application.UseStaticFiles(); application.UseHsts(); application.UseCors(x => x .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader()); application.UseAuthentication(); ConfigureWebSocketEndpoint(application, mqttServerService, mqttSettings); mqttServerService.Configure(); }
public ClientsController(MqttServerService mqttServerService) { _mqttServerService = mqttServerService ?? throw new ArgumentNullException(nameof(mqttServerService)); }
public RetainedApplicationMessagesController(MqttServerService mqttServerService) { _mqttServerService = mqttServerService ?? throw new ArgumentNullException(nameof(mqttServerService)); }