node.js中的socket.setTimeout()

我试图实现基于networking模块的HTTP服务器。
我需要实现保持活动,所以我打电话给sock.setKeepAlive(true) ,然后sock.setTimeout超时2秒后closures套接字。
这是我的代码:

 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秒后刷新它会引发exception –

错误:Socket.writeAfterFIN [写入](net.js:274:12)

如果我评论超时everthing正常工作。
我的代码有什么问题?

解决scheme是在sock.destroy()之后的超时函数内添加sock.end()