首页 > 解决方案 > 无法在 golang 中的 http2 中使用流式传输

问题描述

如何在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 以将数据发送到服务器。这是正确的方法吗?

标签: gostreaminghttp2

解决方案


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


推荐阅读