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