aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs
diff options
context:
space:
mode:
authorBond-009 <bond.009@outlook.com>2019-03-07 21:08:57 +0100
committerGitHub <noreply@github.com>2019-03-07 21:08:57 +0100
commit10a0d6bdba821449abfb1d48e9708ba6f3fc6a62 (patch)
tree602be322daedca127ba66de07837ac8e792730a7 /Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs
parentae0ecc1b10982d9240ecdcc82cb7299fc708aafb (diff)
parent0abe57e930e44eab9566991f33b089d1e61cfb83 (diff)
Merge pull request #1010 from cvium/kestrel_poc
Remove System.Net and port to Kestrel
Diffstat (limited to 'Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs')
-rw-r--r--Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs39
1 files changed, 39 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..268bf4042
--- /dev/null
+++ b/Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs
@@ -0,0 +1,39 @@
+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);
+ }
+ }
+ }
+}