node.js - 获取流发出的字节数
问题描述
我可以使用以下方法找出发送到数据处理程序的字节数:
let bytesEmitted = 0;
strm.setEncoding('utf8');
strm.on('data', d => {
bytesEmitted += Buffer.byteLength(d);
});
但我正在寻找无需附加我自己的处理程序即可访问发出的字节数的方法。
有一个属性 - strm.bytesRead - 但我担心这并不代表“发出的字节数” - 它必须是准确的。
解决方案
这是将bytesRead
属性引入Readable
流的提交。
我们可以在第 140 行看到,当有新的数据块可用时属性会更新,并且在第 148 行data
,只要流保持流动,事件就会立即发出。对于在不离开流动状态的情况下完成的流,您可以随时轮询或以其他方式访问该bytesRead
属性,并认为它等于发出的实际字节数。但是,如果您暂停流,则缓冲的流bytesRead
可能会落后于发出的实际字节,直到所有可用的块都被消耗完。
请注意,此行为未记录在案,并且可能随时更改。
推荐阅读
- java - 使用 springboot 和 hibernate 从 mysql db 检索的日志数据出现问题
- reactjs - 如何在我的组件中导入资源文件夹以避免“../../../resources/images/..”路径?
- c - 链表分段错误
- d3.js - 如何将文本添加到 d3.js 强制定向圆圈?
- python - 如何在我的程序中同时移动两只海龟?
- python - 无法从 newegg.com 的 price-save-percent 容器中提取文本
- python - python中的2D和3D频谱图
- r - R:阶乘的尾随零数
- spring-boot - 创建类路径资源中定义的名称为“entityManagerFactory”的bean时出错:模式验证:缺少表[association_value_entry]
- java - Java:为什么函数的 ArrayList 参数会影响不同的 ArrayList