golang从套接字解析分块的HTTP响应-逐块读取

时间:2019-12-04 07:29:31

标签: http go

我的邮件目标是从连接到HTTP服务器的TCP套接字读取数据,然后解析 HTTP响应块(Transfer-Encoding:块状)-服务器在同一连接上每30秒发送一个块

我附上了我的代码。看来io.Copy会读取第一个块,然后等待下一个块再返回,因此它阻止了我。

如何在不等待下一个块的情况下读取它们?

func readHttpChunk(server net.conn) {
    buf := bufio.NewReader(server)
    for {
        resp, err := http.ReadResponse(buf, nil)
        b := new(bytes.Buffer)
        io.Copy(b, resp.Body)
        fmt.Printf("Got me a chunk!")
    }
}

1 个答案:

答案 0 :(得分:1)

使用io.Copy代替使用resp.Body.Read(buf),其中buf是分配的字节片。使用足够大的缓冲区,以免块被截断。读取内容应将buf填满。