Пример #1
0
        public async Task ServerSentEventsAsync()
        {
            if (!isEnableRealTimeLog)
            {
                return;
            }

            Response.OnStarting(() =>
            {
                Response.Headers["Content-Type"]  = "text/event-stream;charset=UTF-8";
                Response.Headers["Cache-Control"] = "no-cache";
                Response.Headers["Connection"]    = "keep-alive";

                var requestInfoList = app.GetAllEndRequestInfo();
                var info            = new StringBuilder();
                foreach (var item in requestInfoList)
                {
                    info.Append($"--------------RequestId:{item.RequestId ?? string.Empty}----------<br>");
                    info.Append($"Token:{item.Token ?? string.Empty}<br>");
                    info.Append($"SessionId:{item.SessionID ?? string.Empty}<br>");
                    info.Append($"Language:{item.Language ?? string.Empty}<br>");
                    info.Append($"ClientInfo:{item.ClientIpAddress ?? string.Empty}<br>");
                    info.Append($"StartTime:{item.StartTime.ToString("yyyy-MM-dd HH:mm:ss fff")}<br>");
                    info.Append($"EndTime:{(item.EndTime == null ? string.Empty : item.EndTime.ToString("yyyy-MM-dd HH:mm:ss fff"))}<br>");
                    info.Append($"RequestClassMethon:{item.RequestClassMethon ?? string.Empty}<br>");
                    info.Append($"RequestApi:{item.RequestApi ?? string.Empty}<br>");
                    info.Append($"RequestParams:{item.RequestParams ?? string.Empty}<br>");
                    info.Append($"Response:{item.ResponseResult ?? string.Empty}<br>");
                    info.Append($"Exception:{item.ExceptionLog ?? string.Empty}<br>");
                    info.Append($"AppLog:{item.AppLog ?? string.Empty}<br>");
                    info.Append($"DatabaseLog:{item.DbSqlLog ?? string.Empty}<br>");
                    info.Append($"---------------end---------------<br><br>");
                }

                var data = Convert.ToBase64String(Encoding.UTF8.GetBytes(info.ToString()));
                data     = ServerSentEventData(data, DateTime.Now.Ticks.ToString());
                Response.HttpContext.Response.BodyWriter.WriteAsync(Encoding.UTF8.GetBytes(data));
                return(Task.FromResult(0));
            });
        }