private static SessionListItem CreateSessionListItem(SessionEventArgsBase e) { lastSessionNumber++; bool isTunnelConnect = e is TunnelConnectSessionEventArgs; var item = new SessionListItem { Number = lastSessionNumber, WebSession = e.WebSession, IsTunnelConnect = isTunnelConnect }; if (isTunnelConnect || e.WebSession.Request.UpgradeToWebSocket) { e.DataReceived += (sender, args) => { var session = (SessionEventArgs)sender; if (sessionDictionary.TryGetValue(session.WebSession, out var li)) { li.ReceivedDataCount += args.Count; } }; e.DataSent += (sender, args) => { var session = (SessionEventArgs)sender; if (sessionDictionary.TryGetValue(session.WebSession, out var li)) { li.SentDataCount += args.Count; } }; } item.Update(); return(item); }
private static async Task ProxyServer_BeforeResponse(object sender, SessionEventArgs e) { SessionListItem item = null; if (sessionDictionary.TryGetValue(e.WebSession, out item)) { item.Update(); } if (item != null) { if (e.WebSession.Response.HasBody) { e.WebSession.Response.KeepBody = true; await e.GetResponseBody(); item.Update(); } } }