1.首先建立监听socket,监听socket事件,等待接受连接。
2.客户端有连接请求,建立连接,调用连接处理函数,进入HTTPServer的handle_stream方法处理。
3.实例化HTTP1ServerConnection, conn = HTTP1ServerConnection(stream, self.conn_params, context),调用conn.start_serving(self),self为HTTPServer对象
4.start_serving中会调用_server_request_loop(delegate), delegate为HTTPServer对象
5.调用request_delegate = delegate.start_request(self, conn), 此时request_delegate为_RoutingDelegate对象
6.调用conn.read_response(request_delegate), 读取请求数据
7.首先读取header部分,parse后得到start_line和请求headers,读取完header会调用delegate.headers_received(start_line, headers),此时delegate为request_delegate
8.调用_RoutingDelegate中的headers_received方法,实例化request = httputil.HTTPServerRequest(...), self.delegate = self.router.find_handler(request),此时,self.delegate为_HandlerDelegate对象。
9.调用_HandlerDelegate中的headers_received方法。暂时不考虑stream_request_body的情况,那么此方法什么也不做。
10.headers处理完之后,开始读取请求body,读取完之后,调用request_delegate.finish()
11.调用_HandlerDelegate中的finish()方法,分析请求body,调用_HandlerDelegate中的execute方法,处理请求。
12.实例化RequestHandler,调用它的_execute方法,根据request.method决定调用哪个具体的方法进行处理。
13.最后,将响应写回客户端,结束本次请求