diff --git a/g/net/ghttp/http_server_handler.go b/g/net/ghttp/http_server_handler.go index bb8a71c1b..f3329b0e5 100644 --- a/g/net/ghttp/http_server_handler.go +++ b/g/net/ghttp/http_server_handler.go @@ -47,6 +47,7 @@ func (s *Server)callHandler(h *HandlerItem, r *ClientRequest, w *ServerResponse) c.MethodByName("Shut").Call(nil) } else { h.faddr(s, r, w) + w.Output() } } diff --git a/g/net/ghttp/http_server_response.go b/g/net/ghttp/http_server_response.go index bf89f28f7..2f04765cd 100644 --- a/g/net/ghttp/http_server_response.go +++ b/g/net/ghttp/http_server_response.go @@ -52,7 +52,7 @@ func (r *ServerResponse) WriteHeaderEncoding(encoding string) { r.Header().Set("Content-Type", "text/plain; charset=" + encoding) } -// 获取缓冲区数据 +// 获取当前缓冲区中的数据 func (r *ServerResponse) Buffer() []byte { r.bufmu.RLock() defer r.bufmu.RUnlock() @@ -61,7 +61,10 @@ func (r *ServerResponse) Buffer() []byte { // 输出缓冲区数据到客户端 func (r *ServerResponse) Output() { - r.bufmu.RLock() - defer r.bufmu.RUnlock() - r.ResponseWriter.Write(r.buffer) + r.bufmu.Lock() + defer r.bufmu.Unlock() + if len(r.buffer) > 0 { + r.ResponseWriter.Write(r.buffer) + r.buffer = make([]byte, 0) + } }