javascript-node.js中的socket.setTimeout()
作者:互联网
我试图实现基于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));
}
但是,当我第一次打开浏览器并访问http:// localhost:1234 / profile.html时,它可以正常工作,但是如果我在2秒后进行刷新,则会引发异常-
Error: This socket has been ended by the other party at Socket.writeAfterFIN [as write] (net.js:274:12)
如果我评论超时,一切都很好.
我的代码有什么问题?
解决方法:
解决方案是在sock.end()之后的超时函数中添加sock.destroy().
标签:node-js,sockets,http,javascript,keep-alive 来源: https://codeday.me/bug/20191123/2065670.html