收到发布请求后,发布的数据会通过多个函数,处理完成后会显示合适的网页。问题是存在一点延迟,因为处理数据的函数有点耗时。
有什么方法可以向客户展示数据处理的进度吗?本质上,当发布数据时,我希望显示一些消息,例如
Loading data (xyz conversion done)
Loading data (xyz added to stream)
我使用 golang 作为我的后端,并使用 julienschmidt 的 httprouter 。
最佳答案
处理程序中的
w ResponseWriter
func(w ResponseWriter,r *Request)
最有可能实现 http.Flusher
接口(interface)。所以你可以
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。
关于go - 在 golang webapp 中处理 post 请求时显示进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41908171/