javascript - 首先读取数据来决定在哪里 .pipe()

标签 javascript node.js stream

我需要先读取一些流的 (TCP/net.Socket) 数据,然后才能知道应将其传送到何处。但数据似乎没有到达 endSocket

socket.on('data', data => {
  var endSocket = getEndSocket(data);
  stream
    .pipe(endSocket)
    .pipe(socket); // send response back
});

以下代码确实有效,但我觉得为了简单起见,我应该使用 .pipe()

socket.on('data', data => {
  var endSocket = getEndSocket(data);
  endSocket.write(data);
  endSocket.pipe(socket); // send response back
});

最佳答案

这取决于您想如何处理其余数据。如果您向套接字添加管道并保留数据监听器,并且通过同一个套接字发送更多包,则每个包都将被复制到通过管道传输到的所有 endSocket

适合您的第一个示例的模式是,如果您想要一个初始数据包来选择要连接的 endSocket。然后,您应该设置一个双向管道,并断开该数据包上的数据监听器。您还必须写入已经读取的数据,因为管道不会将其重播到 endSocket。

如果来自相同sourcesocket的每个包都应该进入不同的endSockets,那么你的第二个例子看起来很完美。

关于javascript - 首先读取数据来决定在哪里 .pipe(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35651814/

相关文章:

javascript - 如何创建逆向 react 门户

javascript - 使用 JQuery 更改标签文本

javascript - Node 读流: when does the streaming happen?

c# - 计算大字符串的散列时如何避免分配大 Byte[]

Javascript 内存泄漏 : Detached DOM tree

javascript - 如何显示网页的样式表

javascript - 如何添加分页以导航博客文章页面(Node/Express)

python - 在 Python 中使用音频流 RTMP 通过管道和 OpenCV 到 FFmpeg

node.js - 使用express和body-parser设置服务器

node.js - 我应该如何组合docker容器?