Exemplo n.º 1
0
        void InternalError(Exception ex)
        {
            Logging.Error(String.Format("{0} - {1}", ID, ex));
            using (var s = new NetworkStream(Socket, false))
            {
                Http10StatusLine.InternalError.WriteTo(s); s.CRLF();
                s.CRLF();

                Utf8Bytes.From(ex.ToString()).WriteTo(s);
            }
            Dispose();
        }
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();
            }
        }