我在golang中创建了一个文件服务器,并在侦听器上调用Close()方法。
当我尝试访问新Web连接上的端口时,似乎套接字已关闭,我无法访问该网站。
如果我用已经建立的连接来刷新页面,该页面重新加载就好了,好像从未关闭过套接字一样。我什至仍然可以浏览文件系统。
我注意到大约30分钟后,插座似乎被迫合上。
我有什么要强迫套接字删除所有现有连接以防止人们访问文件服务器的东西吗?
var fileListener net.Listener
host_string = "127.0.0.1:8080"
fileListener, _ = net.Listen("tcp", host_string)
server := &http.Server{Addr: host_string, Handler:
http.FileServer(http.Dir("/"))}
go func() { server.Serve(fileListener) }()
fileListener.Close()
无法关闭空闲的HTTP / 1.1或HTTP2连接。https://golang.org/issue/9478上有一个未解决的问题,但没有立即计划。请注意,一旦关闭侦听器,服务器将不接受新连接。您正在重用相同的连接。
如果要强制关闭所有连接,则需要使用进行簿记,以跟踪处于活动状态的TCP连接。http.Server
ConnState
您还可以Connection: close
在每个响应上设置处理程序,但是如果客户端需要发出多个请求,这会使HTTP服务器的效率大大降低。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句