0

刚从 noflo 开始,我很困惑为什么我不能让一个简单的流程工作。我从今天开始,按照示例页面安装 noflo 和核心组件,以及规范的“Hello World”示例

Read(filesystem/ReadFile) OUT -> IN Display(core/Output)
'package.json' -> IN Read

工作......到目前为止很好,然后我想稍微改变它,将“noflo-rss”添加到组合中,然后将示例更改为

Read(rss/FetchFeed) OUT -> IN Display(core/Output)
'http://xkcd.com/rss.xml' -> IN Read

这样跑

$ /node_modules/.bin/noflo-nodejs --graph graphs/rss.fbp --batch --register=false --debug

......但没有雪茄——没有输出,它只是坐在那里根本没有输出

如果我将 aconsole.log插入 FetchFeed.coffee 的源代码

parser.on 'readable', ->
  while item = @read()
    console.log 'ITEM', item  ## Hack the code here
    out.send item

然后我确实看到了 RSS 提要的输出和内容。

问题: 为什么out.send在 rss/FetchFeed 中不将数据提供core/Output给它以供打印?什么黑魔法使第一个示例有效,但第二个无效?

4

1 回答 1

1

当网络停止运行时--batch,进程将退出,这由节点之间的非零打开连接数决定。问题是 rss/FetchFeed 没有在其输出端口上打开连接,因此连接计数降至零并且进程存在。

一种解决方法是在没有 --batch 的情况下运行。另一个我刚刚作为拉取请求提交(需要审查)。

于 2016-10-05T12:48:28.093 回答