这导致从服务器发送 2 个数据帧:
func(w http.ResponseWriter, r *http.Request) {
w.Write("foo")
w.(http.Flusher).Flush()
w.Write("bar")
w.(http.Flusher).Flush()
}
这导致从服务器发送 1 个 HEADERS 帧:
func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Trailer:X", "a")
w.(http.Flusher).Flush()
w.Header().Set("Trailer:Y", "b")
w.(http.Flusher).Flush()
}
有没有办法在不使用 framer api 的情况下将尾部帧作为多个 HEADERS 帧发送?
最佳答案
如果您只需要确保尾部被刷新到底层套接字中:
使用ConnState钩子(Hook)发出有关拖车被写入连接的信号。 This是编写预告片并且连接将其状态更改为 StateIdle 的时间点。
如果您想确保预告片在单独的帧中发送:
Hijack TCP 连接,手动将终止 block 和尾部写入连接,刷新连接,关闭连接。这(显然)与 keepalive 不兼容。
关于go - 是否可以将尾部 header 刷新到客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48615218/