编程语言
首页 > 编程语言> > javascript-node.js中的socket.setTimeout()

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