public void Configure(IApplicationBuilder app) { //app.UseSession(); //app.UseHttpsRedirection(); app.UseWebSockets(new WebSocketOptions() { KeepAliveInterval = TimeSpan.FromMinutes(15) }); app.Use(async(context, next) => { if (context.WebSockets.IsWebSocketRequest) { using (WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync()) { var socketFinishedTcs = new TaskCompletionSource <object>(); BackgroundSocketProcessor.AddSocket(webSocket, socketFinishedTcs); await socketFinishedTcs.Task; } } else { // static resources var path = context.Request.Path; var stream = ResourcesManager.TryGetResource(path, true, out string extension); context.Response.ContentType = ResourcesManager.GetExtensionMimeType(extension); await stream.CopyToAsync(context.Response.Body); } }); // Just to test var url = "http://localhost:8080/ReactViewResources/index.html?./&true&__Modules__&__NativeAPI__&custom/resource"; url = url.Replace("&", "^&"); Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true }); }
public static void AcceptWebSocketAsyncBackgroundSocketProcessor(WebApplication app) { // <snippet_AcceptWebSocketAsyncBackgroundSocketProcessor> app.Run(async(context) => { using var webSocket = await context.WebSockets.AcceptWebSocketAsync(); var socketFinishedTcs = new TaskCompletionSource <object>(); BackgroundSocketProcessor.AddSocket(webSocket, socketFinishedTcs); await socketFinishedTcs.Task; }); // </snippet_AcceptWebSocketAsyncBackgroundSocketProcessor> }