gpt4 book ai didi

http - 优雅关闭 node.JS HTTP 服务器

转载 作者:IT老高 更新时间:2023-10-28 22:00:22 25 4
gpt4 key购买 nike

这是我正在开发的一个简单的网络服务器

var server = require("http").createServer(function(req,resp) {
resp.writeHead(200,{"Content-Type":"text/plain"})
resp.write("hi")
resp.end()
server.close()
})
server.listen(80, 'localhost')
// The shortest webserver you ever did see! Thanks to Node.JS :)

除了保持事件外,效果很好。当第一个请求进来时,server.close 被调用。但这个过程并没有结束。实际上 TCP 连接仍然是打开的,这允许另一个请求通过,这是我试图避免的。

如何关闭现有的 keep-alive 连接?

最佳答案

您可以控制连接的空闲超时,因此您可以设置保持连接保持打开状态的时间。例如:

server=require('http').createServer(function(req,res) {
//Respond
if(req.url.match(/^\/end.*/)) {
server.close();
res.writeHead(200,{'Content-Type':'text/plain'});
res.end('Closedown');
} else {
res.writeHead(200,{'Content-Type':'text/plain'});
res.end('Hello World!');
}
}).listen(1088);
<b>//Set the idle timeout on any new connection
server.addListener("connection",function(stream) {
stream.setTimeout(4000);
});</b>

我们可以用 netcat 进行测试:

ben@quad-14:~/node$ <b>echo -e "GET /test HTTP/1.1\nConnection: keep-alive\n\n" | netcat -C -q -1 localhost 1088</b>
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: keep-alive
Transfer-Encoding: chunked

c
Hello World!
0

4 秒后,连接关闭

现在我们可以证明关闭服务器是有效的:在所有空闲连接被丢弃后,服务器退出:

ben@quad-14:~/node$ <b>echo -e "GET /end HTTP/1.1\nConnection: keep-alive\n\n" | netcat -C -q -1 localhost 1088</b>
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: keep-alive
Transfer-Encoding: chunked

9
Closedown
0

4秒后,连接关闭,服务器退出

关于http - 优雅关闭 node.JS HTTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5263716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com