123456789101112131415161718192021222324252627282930313233343536373839 |
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Http;
- using Microsoft.Extensions.Logging;
- using WebSocketManager = Emby.Server.Implementations.WebSockets.WebSocketManager;
- namespace Emby.Server.Implementations.Middleware
- {
- public class WebSocketMiddleware
- {
- private readonly RequestDelegate _next;
- private readonly ILogger<WebSocketMiddleware> _logger;
- private readonly WebSocketManager _webSocketManager;
- public WebSocketMiddleware(RequestDelegate next, ILogger<WebSocketMiddleware> logger, WebSocketManager webSocketManager)
- {
- _next = next;
- _logger = logger;
- _webSocketManager = webSocketManager;
- }
- public async Task Invoke(HttpContext httpContext)
- {
- _logger.LogInformation("Handling request: " + httpContext.Request.Path);
- if (httpContext.WebSockets.IsWebSocketRequest)
- {
- var webSocketContext = await httpContext.WebSockets.AcceptWebSocketAsync(null).ConfigureAwait(false);
- if (webSocketContext != null)
- {
- await _webSocketManager.OnWebSocketConnected(webSocketContext);
- }
- }
- else
- {
- await _next.Invoke(httpContext);
- }
- }
- }
- }
|