我在应用程序中使用CloseNotifier,代码如下所示:
func Handler(res http.ResonseWriter, req *http.Request) {
notify := res.(CloseNotifier).CloseNotify()
someLogic();
select {
case <-notify:
someCleanup()
return;
default:
}
someOtherLogic();
}
我注意到CloseNotifier现在已被弃用。 From source code:
// Deprecated: the CloseNotifier interface predates Go's context package.
// New code should use Request.Context instead.
但是,我不确定确切如何在此处使用Request.Context。
答案 0 :(得分:0)
实际上似乎很简单。 From this blogpost:
func Handler(res http.ResonseWriter, req *http.Request) {
ctx := req.Context()
someLogic();
select {
case <-ctx.Done():
someCleanup(ctx.Err())
return;
default:
}
someOtherLogic();
}