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(); }
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(); } }