Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 3
0
 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}");
         }
     }
 }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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);
                }
            }
        }