我无法运行一个简单的 scalaz-stream 示例,从 TCP 读取并写入标准输出。
val src = tcp.reads(1024)
val addr = new InetSocketAddress(12345)
val p = tcp.server(addr, concurrentRequests = 1) {
src ++ tcp.lift(io.stdOutLines)
}
p.run.run
它只是坐在那里,不打印任何东西。
我也尝试过各种安排使用to
, 总是用tcp.lift
咒语来获得 a Process[Connection, A]
,包括
tcp.server(addr, concurrentRequests = 1)(src) map (_ to tcp.lift(io.stdOutLines))
这甚至不编译。
我需要wye
将源流和打印流放在一起吗?我在原始拉取请求中找到的一个tcp
示例nio
似乎表明了这一点,但似乎wye
不再存在于 上Process
,因此不幸的是,混乱盛行。
编辑事实证明,除了 Paul 解释的类型问题之外,您还需要“手动”运行内部进程,例如通过执行p.map(_.run.run).run.run
. 我不认为这是这样做的惯用方式,但它确实有效。