Exemplo n.º 1
0
        public async Task Invoke(HttpContext context)
        {
            if (!context.WebSockets.IsWebSocketRequest)
            {
                await _next.Invoke(context);

                return;
            }

            CancellationToken ct = context.RequestAborted;

            using (WebSocket currentSocket = await context.WebSockets.AcceptWebSocketAsync())
            {
                var resultId = await ReceiveStringAsync(currentSocket, ct);

                var cnt = 0;
                while (!ct.IsCancellationRequested && !currentSocket.CloseStatus.HasValue)
                {
                    var resultClient = ResultClient.Create();
                    var actualResult = await resultClient.Get(new Guid(resultId));
                    await SendStringAsync(currentSocket, $"{actualResult} {cnt++}", ct);

                    await Task.Delay(1000);
                }

                await currentSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", ct);
            }
        }
Exemplo n.º 2
0
        protected override async Task RunAsync(CancellationToken cancellationToken)
        {
            while (true)
            {
                try
                {
                    var queueClient = QueueClient.Create(_queueName);
                    var message     = await queueClient.GetMessageAsync();

                    if (message != null)
                    {
                        string response;

                        response = await RunSproAsync(message.SessionType, message.UserName);

                        //response = $"ANSWER FOR {message.MessageId} : {message.UserName}   {message.SessionType}";
                        var resultClient = ResultClient.Create();
                        await resultClient.Set(message.MessageId, response).ConfigureAwait(false);
                    }
                    else
                    {
                        await Task.Delay(1000);
                    }
                }
                catch (Exception ex)
                {
                    ServiceEventSource.Current.ServiceMessage(this.Context, "EXCEPTION : " + ex.ToString());
                    await Task.Delay(250);
                }
            }
        }