go - 无法在 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 以将数据发送到服务器。这是正确的方法吗?
解决方案
在 HTTP/2 中,流是短暂的,并且对应于请求/响应交换。实际上,响应结束会关闭流。client.Get
如果底层连接使用 HTTP/2,通过发出另一个请求将自动在连接上打开一个新流。
推荐阅读
- android - 我可以在 Delphi Tokyo 中使用 BlueStacks 4 作为 android 模拟器吗?
- mysql - MariaDB(MySQL)的“重启”和“停止/启动”有什么区别吗?
- linux - elf 中符号解析的开销
- mysql - 声明 mariaDB 错误。如何解决此查询?
- arrays - 从数组的开头删除与值匹配的尽可能多的元素,直到数组达到指定的大小
- php - laravel 中的控制器关注点分离
- python - 在 Python/Intellij Idea 中使用布尔值
- r - 如何遍历两列并用R中的字符串填充同一索引处的另一列?
- ruby - 基于 STDOUT 日志的 docker 健康检查
- c - 在 while 循环中使用 fscanf 和 fprintf 进行读写