node.js 中的 socket.setTimeout()

dim*_*mak 5 javascript sockets http keep-alive node.js

我尝试基于net模块实现http服务器。
我需要在其中实现保持活动状态,因此我调用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));
}
Run Code Online (Sandbox Code Playgroud)

但是当我第一次打开浏览器时http://localhost:1234/profile.html它工作正常,但如果我在 2 秒后刷新它会抛出异常 -

错误:此套接字已被另一方在 Socket.writeAfterFIN [as write] 处结束 (net.js:274:12)

如果我评论超时,一切都会正常。
我的代码有什么问题吗?

dim*_*mak 4

sock.destroy()解决方案是在超时函数之后添加sock.end()