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()