我试图实现基于 net 模块的 http 服务器。
我需要在其中实现 keep-alive,所以我调用sock.setKeepAlive(true)
然后sock.setTimeout
在 2 秒超时后关闭套接字。
这是我的代码:
var server = net.createServer({ allowHalfOpen: false},socketListener);
function start(port){
server.listen(port,'localhost');
}
function socketListener(sock){
sock.setEncoding("utf8");
sock.setKeepAlive(true);
sock.setTimeout(2000,function(){
sock.end("HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n");
});
sock.on("data",responser.responserCreator(sock,httpParser,baseDir,stat));
}
但是当我打开浏览器并http://localhost:1234/profile.html
第一次工作正常时,但如果我在 2 秒后刷新它会引发异常 -
错误:此套接字已被对方在 Socket.writeAfterFIN [as write] (net.js:274:12) 处结束
如果我评论超时一切正常。
我的代码有什么问题?