コード例 #1
0
        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
            });
        }
コード例 #2
0
    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>
    }