我正在使用 NodeJS 制作一个手工制作的 HTTP 代理,但是当每秒有很多请求时,net.js 在读取空连接结束时进入无限循环。(它发生在 40 req/s 左右的随机方式)。
我分离了导致错误的代码,创建了一个引发问题的简单 HTTP 代理:
代码:https ://gist.github.com/Ifnot/5336823
我使用命令“NODE_DEBUG=net node main.js”将 net.js 置于调试模式,即使所有连接似乎都已关闭,程序也会无限期地输出:
调试:https ://gist.github.com/Ifnot/5274181
注意:当循环开始时,我可以看到这个错误:
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at Socket.EventEmitter.addListener (events.js:160:15)
at Socket.Readable.on (_stream_readable.js:653:33)
at Socket.EventEmitter.once (events.js:179:8)
at TCP.onread (net.js:527:26)
难道我做错了什么 ?有谁知道会发生什么?为什么会出现这个问题?
(我使用的是节点 v0.10.4,在之前的版本 v0.9.x 中发现了问题)