如何过早关闭/中止 Golang http.Client POST

我http.Client用于长轮询的客户端实现:


resp, err := client.Post(url, "application/json", bytes.NewBuffer(jsonPostBytes))

if err != nil {

    panic(err)

}

defer resp.Body.Close()


var results []*ResponseMessage

err = json.NewDecoder(resp.Body).Decode(&results)  // code blocks here on long-poll

有没有标准的方法来抢先/取消来自客户端的请求?


我想调用resp.Body.Close()会做到这一点,但我必须从另一个 goroutine 调用它,因为客户端通常已经在读取长轮询的响应时被阻止。


我知道有一种方法可以通过 设置超时http.Transport,但我的应用程序逻辑需要根据用户操作进行取消,而不仅仅是超时。


白衣染霜花
浏览 233回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go