如何查询 NodeJS 流“元数据”
How to query NodeJS stream 'meta data'?
我有一个程序,有几个长管道和几个转换。
例如
socket.pipe(ta).pipe(tb).pipe(tc);
...
tc.pipe(other_socket);
向/从管道添加/读取元数据的最佳方法是什么?
例如:ta
累积数据包并将其分解为行。 tb
需要根据原始 IP 地址(如果有)在每一行前面加上数据前缀。
tb
如何从其输入中获取remoteAddress
?
这里似乎与原型遗传有一些相似之处。 即 tb
应该问ta
(缺少属性),然后ta
应该问socket
(有属性)。
我正在寻找一种从管道添加和读取元数据的通用方法,因为我还有其他更复杂但类似的问题。
我目前正在通过使用由具有meta
和payload
属性的对象组成的"对象流"来解决此问题。 每个转换都必须对payload
执行其操作,并且大多数转换不会meta
。 这个解决方案很丑陋,特别是因为我不得不创建一个新的xnet
模块,它看起来像net
但会产生这些增强对象,而不是普通的缓冲区或字符串。
(Haskellers可能会将这个解决方案识别为Monad,我正在将我使用的大部分流转换提升为"元"Monad。 我还在学习哈斯克尔,所以这个观察可能是不正确的。
您可以使用
pipe
事件:
tb.on('pipe', function(ta) {
console.log('getting data from', ta.remoteAddress);
});
如果元数据是特定管道执行实例的只读数据,那么为什么不在创建单个管道时传递此数据。像这样的东西:socket.pipe(new Ta(address))
就Haskell而言,它听起来像一个Reader moand,其中Pipeline执行功能需要一个Reader,它完全满足了管道各个管道的所有元数据需求。
相关文章:
- 访问Twilio短信元数据
- Firebase-返回用户uid并将用户元数据值设置为不同的节点
- Chart.js2.X中的条形值-数据集元数据未定义
- E4X中是否有一种方法可以将基元数据类型的XMLList转换为类似于Array.join()的Array
- 获取javascript中的元数据属性
- 从 Google 云端硬盘请求文件元数据时缺少“downloadUrl”参数
- 如何在上传前在浏览器中去除图像元数据(javascript)
- chart.js v2:如何添加元数据的工具提示
- 如何从广播流中获取mp3元数据(无icecast,无shoutcast)
- 了解JavaScript中的基元数据类型
- 如何通过AJAX发送YouTube视频元数据
- Extjs 4,如何使用单个Json文件为多个动态网格发送多个元数据
- 在浏览器刷新上重复数据-Nodejs
- 从S3获取视频文件元数据
- Tokbox中的令牌元数据
- 是否有javascript机制来修改图像的EXIF元数据信息
- 如何查询 NodeJS 流“元数据”
- 仅在nodejs上使用mongoose列出所有GridFs元数据
- 在NodeJS中使用gridfs通过元数据删除文件
- 如何从 nodejs aws s3 getObject 回调数据中检索元数据