public async Task Invoke(HttpContext context)
        {
            if (!context.WebSockets.IsWebSocketRequest)
            {
                return;
            }

            var socket = await context.WebSockets.AcceptWebSocketAsync();

            await _webSocketHandler.OnConnected(socket);

            await Receive(socket, async (result, buffer) =>
            {
                if (result.MessageType == WebSocketMessageType.Text)
                {
                    await _webSocketHandler.ReceiveAsync(socket, result, buffer);
                    return;
                }
                else if (result.MessageType == WebSocketMessageType.Close)
                {
                    await _webSocketHandler.OnDisconnected(socket);
                    return;
                }
            });
        }
Example #2
0
        public void Configure(IApplicationBuilder app, IWebSocketHandler handler)
        {
            app.UseAuthentication();

            app.UseCors("CorsPolicy");

            app.UseWebSockets();

            app.UseMvc();

            app.Use(async(context, next) =>
            {
                if (context.WebSockets.IsWebSocketRequest)
                {
                    var webSocket = await context.WebSockets.AcceptWebSocketAsync();
                    handler.OnConnected(webSocket);
                    await handler.ListenForDisconnection(webSocket);
                }
                else
                {
                    await next();
                }
            });
        }