我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,但我的应用程序逻辑需要根据用户操作进行取消,而不仅仅是超时。
相关分类