private void OnRequestHandler(object state) { PacketDecodeCompletedEventArgs e = (PacketDecodeCompletedEventArgs)state; try { System.Threading.Interlocked.Increment(ref mTotalRequests); HttpToken token = (HttpToken)e.Session.Tag; if (token.WebSocket) { OnWebSocketRequest(e.Session, (WebSockets.DataFrame)e.Message); } else { HttpRequest request = (HttpRequest)e.Message; if (EnableLog(LogType.Info)) { mServer.Log(LogType.Info, e.Session, $"{request.RemoteIPAddress} {request.Method} {request.Url} request"); } if (EnableLog(LogType.Debug)) { mServer.Log(LogType.Debug, e.Session, $"{request.RemoteIPAddress} {request.Method} {request.Url} request detail {request.ToString()}"); } request.Server = this; HttpResponse response = request.CreateResponse(); token.KeepAlive = request.KeepAlive; if (token.FirstRequest && string.Compare(request.Header[HeaderTypeFactory.UPGRADE], "websocket", true) == 0) { token.FirstRequest = false; OnWebSocketConnect(request, response); } else { token.FirstRequest = false; OnHttpRequest(request, response); } } } catch (Exception e_) { mServer.Error(e_, e.Session, "{0} OnRequestHandler error {1}", e.Session.RemoteEndPoint, e.Message); } }
public override void SessionPacketDecodeCompleted(IServer server, PacketDecodeCompletedEventArgs e) { System.Threading.Interlocked.Increment(ref mRequests); HttpToken token = (HttpToken)e.Session.Tag; if (token.WebSocket) { OnReceiveWebSocketData(e.Session, (WebSockets.DataFrame)e.Message); } else { HttpRequest request = (HttpRequest)e.Message; if (EnableLog(LogType.Info)) { mServer.Log(LogType.Info, e.Session, "{0} Http {1} {2}", request.ClientIPAddress, request.Method, request.Url); } if (EnableLog(LogType.Debug)) { mServer.Log(LogType.Info, e.Session, "{0} {1}", request.ClientIPAddress, request.ToString()); } request.Server = this; if (request.ClientIPAddress == null) { request.Header.Add(HeaderType.CLIENT_IPADDRESS, ((IPEndPoint)e.Session.RemoteEndPoint).Address.ToString()); } HttpResponse response = request.CreateResponse(); token.KeepAlive = request.KeepAlive; if (token.FirstRequest && string.Compare(request.Header[HeaderType.UPGRADE], "websocket", true) == 0) { token.FirstRequest = false; OnWebSocketConnect(request, response); } else { token.FirstRequest = false; if (string.IsNullOrEmpty(request.Ext) && request.BaseUrl != "/") { mActionFactory.Execute(request, response, this); } else { OnProcessResource(request, response); } } } }
private void OnRequestHandler(PacketDecodeCompletedEventArgs e) { try { HttpToken token = (HttpToken)e.Session.Tag; if (token.WebSocket) { OnWebSocketRequest(token.Request, e.Session, (WebSockets.DataFrame)e.Message); } else { HttpRequest request = (HttpRequest)e.Message; if (EnableLog(LogType.Info)) { mServer.Log(LogType.Info, null, $"HTTP {request.ID} {request.RemoteIPAddress} {request.Method} {request.Url}"); } if (EnableLog(LogType.Debug)) { mServer.Log(LogType.Debug, e.Session, $"HTTP {request.ID} {request.RemoteIPAddress} {request.Method} {request.Url} detail {request.ToString()}"); } request.Server = this; HttpResponse response = request.CreateResponse(); token.KeepAlive = request.KeepAlive; if (token.FirstRequest && string.Compare(request.Header[HeaderTypeFactory.UPGRADE], "websocket", true) == 0) { token.FirstRequest = false; OnWebSocketConnect(request, response); } else { token.FirstRequest = false; if (!Options.IOQueueEnabled) { OnHttpRequest(request, response); } else { IOQueueProcessArgs args = new IOQueueProcessArgs { Request = request, Response = response }; token.IOQueue.Enqueue(args); } } } } catch (Exception e_) { if (EnableLog(LogType.Error)) { mServer.Error(e_, e.Session, $"HTTP {e.Session.RemoteEndPoint} {0} OnRequestHandler error {e_.Message}@{e_.StackTrace}"); } } }
private void OnRequestHandler(object state) { PacketDecodeCompletedEventArgs e = (PacketDecodeCompletedEventArgs)state; try { System.Threading.Interlocked.Increment(ref mTotalRequests); HttpToken token = (HttpToken)e.Session.Tag; if (token.WebSocket) { OnWebSocketRequest(e.Session, (WebSockets.DataFrame)e.Message); } else { HttpRequest request = (HttpRequest)e.Message; if (request.ClientIPAddress == null) { IPEndPoint IP = e.Session.RemoteEndPoint as IPEndPoint; if (IP != null) { string ipstr = IP.Address.ToString() + ":" + IP.Port.ToString(); request.Header.Add(HeaderTypeFactory.CLIENT_IPADDRESS, ipstr); } } if (EnableLog(LogType.Info)) { mServer.Log(LogType.Info, e.Session, "{0} {1} {2}", request.ClientIPAddress, request.Method, request.Url); } if (EnableLog(LogType.Debug)) { mServer.Log(LogType.Debug, e.Session, "{0} {1}", request.ClientIPAddress, request.ToString()); } request.Server = this; HttpResponse response = request.CreateResponse(); token.KeepAlive = request.KeepAlive; if (token.FirstRequest && string.Compare(request.Header[HeaderTypeFactory.UPGRADE], "websocket", true) == 0) { token.FirstRequest = false; OnWebSocketConnect(request, response); } else { token.FirstRequest = false; OnHttpRequest(request, response); } } } catch (Exception e_) { mServer.Error(e_, e.Session, "{0} OnRequestHandler error {1}", e.Session.RemoteEndPoint, e.Message); } }
public override void SessionPacketDecodeCompleted(IServer server, PacketDecodeCompletedEventArgs e) { System.Threading.Interlocked.Increment(ref mTotalRequests); HttpToken token = (HttpToken)e.Session.Tag; if (token.WebSocket) { OnWebSocketRequest(e.Session, (WebSockets.DataFrame)e.Message); } else { HttpRequest request = (HttpRequest)e.Message; if (request.ClientIPAddress == null) { request.Header.Add(HeaderTypeFactory.CLIENT_IPADDRESS, e.Session.RemoteEndPoint.ToString()); } if (EnableLog(LogType.Info)) { mServer.Log(LogType.Info, e.Session, "{0} {1} {2}", request.ClientIPAddress, request.Method, request.Url); } if (EnableLog(LogType.Debug)) { mServer.Log(LogType.Debug, e.Session, "{0} {1}", request.ClientIPAddress, request.ToString()); } request.Server = this; HttpResponse response = request.CreateResponse(); token.KeepAlive = request.KeepAlive; if (token.FirstRequest && string.Compare(request.Header[HeaderTypeFactory.UPGRADE], "websocket", true) == 0) { token.FirstRequest = false; OnWebSocketConnect(request, response); } else { token.FirstRequest = false; OnHttpRequest(request, response); } } }