aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs
diff options
context:
space:
mode:
authorClaus Vium <clausvium@gmail.com>2019-02-27 23:22:55 +0100
committerClaus Vium <clausvium@gmail.com>2019-02-27 23:22:55 +0100
commitfb1de5a9213f7da98ed15a6975201d6bca3537d4 (patch)
tree74ca93c5b068e148cfa67ad013d9db650b2ebb0d /Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs
parent71ed8409446774c395b339728e2436c3b30536d8 (diff)
Remove more cruft and add the beginnings of a socket middleware
Diffstat (limited to 'Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs')
-rw-r--r--Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs36
1 files changed, 36 insertions, 0 deletions
diff --git a/Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs b/Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs
new file mode 100644
index 000000000..a1d0e77d6
--- /dev/null
+++ b/Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs
@@ -0,0 +1,36 @@
+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);
+ _webSocketManager.AddSocket(webSocketContext);
+ }
+ else
+ {
+ await _next.Invoke(httpContext);
+ }
+ }
+ }
+}