登录
首页 >  Golang >  Go问答

在golang的http2中无法实现流式传输

来源:stackoverflow

时间:2024-03-25 17:18:27 477浏览 收藏

在 Go 语言的 HTTP/2 中,重用流存在困难。由于流与请求/响应交换相对应,因此响应结束会关闭流。尽管连接使用 HTTP/2,但通过 client.Get 发出的新请求会在连接上开启一个新的流。因此,无法实现流的重用。

问题内容

如何在golang中重用http2流?

大家好,最近我尝试了很多方法重用流来发送http2数据但都失败了,而且我在http2中没有找到很多相关的解决方案,有人可以给我一些提示或演示吗?

client := http.Client{

        Transport: &http2.Transport{
            DialTLS: func(network, addr string, cfg *tls.Config) (net.Conn, error) {
                return net.DialTimeout(network, addr, time.Second)
            },
                AllowHTTP: true,
        },
    }

    resp, err := client.Get(path)

我尝试使用 resp 作为客户端并写入此 resp 以将数据发送到服务器。这是正确的做法吗?


解决方案


在 HTTP/2 中,流的生命周期很短,并且对应于请求/响应交换。实际上,响应结束会关闭流。如果底层连接使用 HTTP/2,则通过 client.Get 发出另一个请求将自动在连接上打开一个新流。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>