コード例 #1
0
        public async Task Invoke(HttpContext ctx, DatabaseContext db)
        {
            if (ctx.WebSockets.IsWebSocketRequest && ctx.Request.Query.TryGetValue("email", out var email))
            {
                var result = await AuthService.CreateLink(email);

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

                var wrapper = SocketWrapper.Create(result.UserId, result.Unique, socket);
                Sockets.Add(wrapper);

                var url = $"{Program.URL}/login/{result.Protected}";
                Console.WriteLine(url);

                while (wrapper.Socket.State == WebSocketState.Open)
                {
                    await Task.Delay(5000);
                }
            }
            else
            {
                await Next(ctx);
            }
        }