server.Shutdown 也会直接中断正在发数据的连接吗?
不 Shutdown 的话正常应该发送 60 个 asd,我在第 5 个调用了 Shutdown,连接直接被中断了。
请问一下大家这个是怎么回事?
var server *http.Server
server = &http.Server{
IdleTimeout: 60*time.Second,
WriteTimeout: 60*time.Second,
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Length", "181")
w.WriteHeader(200)
for i := 0; i < 60; i++ {
if i == 5 {
//server.SetKeepAlivesEnabled(false)
_, _ = w.Write([]byte("zxc"))
fmt.Println(server.Shutdown(context.Background()))
_, _ = w.Write([]byte("qwe"))
}
_, _ = w.Write([]byte("asd"))
if flusher, ok := w.( http.Flusher); ok {
flusher.Flush()
} else {
fmt.Println("Not flushable")
}
//time.Sleep(time.Second)
}
_, _ = w.Write([]byte("\n"))
}),
}
err = server.Serve(ServeHTTP)
fmt.Println(err)
$ telnet 127.0.0.1 80
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
GET / HTTP/1.1
Host: 127.0.0.1
HTTP/1.1 200 OK
Content-Length: 181
Date: Mon, 29 Apr 2019 15:14:18 GMT
Content-Type: text/plain; charset=utf-8
asdasdasdasdasdConnection closed by foreign host.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.