收到发布请求后,发布的数据会通过多个功能,处理完成后会显示合适的网页。问题是由于处理数据的功能需要花费一些时间,因此存在一些延迟。
有没有办法向客户展示数据处理的进度?基本上,当发布数据时,我希望显示一些消息,如
Loading data (xyz conversion done)
Loading data (xyz added to stream)
我正在使用golang作为我的后端和julienschmidt的httprouter。
答案 0 :(得分:0)
w ResponseWriter
中的 func(w ResponseWriter,r *Request)
最有可能实现http.Flusher
接口。所以你可以
io.WriteString(w, "Loading data (xyz conversion done)")
w.(http.Flusher).Flush() //you must assert it implements
io.WriteString(w, payload)
在完成所有工作之前冲洗到客户端。 为了获得更多控制,你甚至可以劫持连接
conn, bufrw, err :=w.(http.Hijacker).Hijack()
defer conn.Close()
bufrw.WriteString("Loading data (xyz conversion done)")
bufrw.Flush()
bufrw.WriteString("Loading data (xyz added to stream)")
bufrw.Flush()
并说原始TCP。
答案 1 :(得分:0)
显示进度指示器是客户端代码的工作(在进行异步调用时)。
HTTP是一种请求 - 响应协议。响应具有标准格式(包括状态行,标题,消息正文)。它们不是部分发送的。
您的建议与TCP连接有关,但与HTTP无关。