关键代码 var rawstream = new Readable({ highWaterMark : 128 * 1024, read(size) { } });
rawstream.pipe(zlib.createGunzip())
然后后续会不停的rawstream.push一些binary的数据
有时候客户端可能会传过来损坏的gzip数据 然后就会Gunzip.zlibOnError 把整个node进程崩掉 我试了rawstream.on('error', function(err){
}); 并不能捕获到error 求教 有什么办法至少能不让node崩掉?
回复 (7)
S
正常的捕获pipe两端异常,就是分别监听error事件,你是不是只监听了读流,没监听写流?
另外,一旦error发生了,要记得close流
进程的异常是通过process.on('uncaughtException')监听的,但这个是兜底处理意外的,不建议明知道会异常还用uncaughtException处理,已知会有的异常应该主动处理。
H
引用 sodawy正常的捕获pipe两端异常,就是 分别 监听error事件,你是不是只监听了读流,没监听写流? 另外,一旦error发生了,要记得close流 进程的异常是通过process.on('unca...
@soda-wy 也就是说zlib.createGunzip()创建出的这个stream,也要自己on('error'监听 才行?
S
引用 hzqst@soda wy 也就是说zlib.createGunzip()创建出的这个stream,也要自己on('error'监听 才行?
@hzqst 恩,pipe两边,都有可能有自己的错误。听你的描述,是右边在报错
S
H
引用 sodawy@hzqst 可能在你都明白了之后,会觉得pump挺好用的
@soda-wy 谢了,问题已经很完美的解决了!
S
引用 hzqst@soda wy 谢了,问题已经很完美的解决了!
@hzqst :)
L
:)
参与回复
登录后即可参与回复。登录