Exemplo n.º 1
0
        public void Solve(Stream s, HttpSession session, HttpRequest request)
        {
            Logging.Info(string.Format("[{0}] 200 <= {1}", session.ID, request));

            // header
            Http10StatusLine.Ok.WriteTo(s);
            s.CRLF();
            // body
            m_body.WriteTo(s);
        }
Exemplo n.º 2
0
        void Request(HttpRequest request)
        {
            if (request == null)
            {
                throw new Exception("no http request");
            }
            m_request = request;

            if (request.IsWebSocketUpgrade)
            {
                // WebSocket session
                // handshake
                var key = request.GetWebSocketKey();
                //var version = request.GetWebSocketVersion();

                // s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
                using (var s = new NetworkStream(Socket, false))
                {
                    Http11StatusLine.SwitchingProtocols.WriteTo(s); s.CRLF();
                    s_upgrade_websocket.WriteTo(s); s.CRLF();
                    s_connection_upgrade.WriteTo(s); s.CRLF();
                    s_websocket_accept.WriteTo(s); AcceptWebSocketKey(key).WriteTo(s); s.CRLF();

                    m_wsFrameReader = new WebSocketFrameReader();
                    RaiseWebSocketAccepted(m_wsFrameReader.FrameObservable);

                    s.CRLF();
                }
            }
            else
            {
                // Http session
                // Send response
                using (var s = new NetworkStream(Socket, false))
                {
                    m_solver.Solve(s, this, request);
                }

                Dispose();
            }
        }