javascript - 管道订购很重要吗?将 stdin 通过管道传输到 http 请求并将结果通过管道传输到 stdout

标签 javascript node.js coffeescript stream

我正在查看“http 客户端”问题

我提出了以下解决方案,通过了 2/3 测试:

request = require 'request'

#Generate a read/writable stream piping into the outbuff
myRequest = request.post("http://localhost:8099").pipe(process.stdout)

process.stdin.pipe(myRequest)

...出现以下错误:

operator: equal
expected:
  'azzwcc\njup\nvccvwcddun\nmukp\nikeos.\nPaps\'w\nheghuuyuuv\nwu\nbzcawcsenvzm\nouggkneoasc\n'
actual:
  'allsee\nfor\ndeedsetton\nyour\nquick.\nTark\'s\nbimboowood\nso\npleasekindly\ncommunicake\n'

但是,当我按此顺序管道输出时,它工作正常。

request = require 'request'

#Generate a read/writable stream piping into the outbuff
myRequest = request.post("http://localhost:8099")

process.stdin.pipe(myRequest).pipe(process.stdout)

这两个解决方案不应该是相同的吗?我在这里缺少什么?

最佳答案

在第一个示例中,您将 http 响应传递到 stdout(但从不写入请求流)。然后将输入从 stdin 直接传递到 stdout。所以你有两个流写入标准输出。结果是这样的:

HTTP RESPONSE -----
                  |
                  v
STDIN -------> STDOUT

在第二个示例中,您已将来自 stdin 的输入传递到请求流,并将该请求的响应传递到 stdout。结果是这样的:

STDIN ----> HTTP REQUEST/RESPONSE ----> STDOUT

关于javascript - 管道订购很重要吗?将 stdin 通过管道传输到 http 请求并将结果通过管道传输到 stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36407530/

相关文章:

node.js - 如何在不使用 native 模块的情况下将 Node.js 应用程序连接到 MongoDB?

javascript - Node.js 与新运算符的调用之间的区别

javascript - 如何为 CoffeeScript 设置 PHPStorm 文件观察器

javascript - 每 X 个值有效地分解一个数组?

javascript - html5 Canvas 。模糊的线条

javascript - polymer 自定义元素 : reusing css with import

node.js - 与 Google Hangouts 和 IBM Watson 集成

intellij-idea - 使用 IntelliJ 调试 CoffeeScript

javascript - 防止 Jquery-UI 在 Bootstrap 导航栏中更改样式

javascript - Mobx:向可观察对象添加新的(数组)属性