socket.setTimeout() in node.js
socket.setTimeout() in node.js
我尝试实现基于。net模块的http服务器。
我需要在其中实现keep-alive,所以我调用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秒后刷新,它会抛出一个异常-
错误:此套接字已被另一方在套接字上结束。writeAfterFIN [as write] (net.js:274:12)
如果我注释了超时,一切都可以正常工作。
我的代码有什么问题?
解决方法是在超时函数中sock.end()
之后添加sock.destroy()
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 如何使用 node.js 比较两个 json 数组
- Node.js's Buffer.writeFloatBE in Javascript
- node.js:setInterval()正在跳过调用
- 如何处理node.js节点mongodb中的连接和查询队列
- Node.js正在更改应用程序以使用集群模块
- 如何使用Node.js最有效地解析网页
- 在openshift node js应用程序中获取请求
- 正在删除node.js中已验证的网站
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 在索引.html和应用.js [node.js] 之间共享变量
- Node.js中的JavaScript原型对象效率
- node.js请求数据事件未在CORS ajax调用中触发
- 使用node.js制作网站
- 使用node.js服务器中的evernote api获取note内容
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- 使用CI和CodeDeploy对node.js应用程序进行连续部署
- 在Node.js中上传和检索图像
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 如何使用 Node JS 获取 JSON 嵌套数组值