gpt4 book ai didi

go - 在 golang webapp 中处理发布请求时显示进度

转载 作者:IT王子 更新时间:2023-10-29 02:22:25 26 4
gpt4 key购买 nike

收到发布请求后,发布的数据会通过几个函数,处理完成后,它会显示一个合适的网页。问题是有一点延迟,因为处理数据的功能有点耗时。

有什么方法可以向客户展示数据处理的进度?本质上,当发布数据时,我希望显示一些消息,如

Loading data (xyz conversion done)
Loading data (xyz added to stream)

我的后端使用 golang 和 julienschmidt 的 httprouter 。

最佳答案

w ResponseWriter 在你的 Handlers 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 中处理发布请求时显示进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41908171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com