Ich bekomme kein einfaches scalaz-stream-Beispiel, das von TCP liest und in std out schreibt.Wie liest man von TCP und schreibt auf stdout?
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
Es sitzt nur dort, nichts zu drucken.
Ich habe auch versucht, verschiedene Anordnungen to
verwenden, immer mit dem tcp.lift
Beschwörung eine Process[Connection, A]
zu bekommen,
tcp.server(addr, concurrentRequests = 1)(src) map (_ to tcp.lift(io.stdOutLines))
enthält, die nicht einmal kompilieren.
Muss ich die Quelle und Druckströme zusammen wye
? Ein Beispiel, das ich auf der original pull request für tcp
anstelle von nio
fand, schien dies anzuzeigen, aber wye
scheint nicht mehr auf Process
zu existieren, so herrscht Verwirrung leider.
bearbeiten es stellt sich heraus, dass zusätzlich Probleme der Art von Paul erklärt, müssen Sie auch, indem Sie p.map(_.run.run).run.run
die inneren Prozesse „von Hand“, zum Beispiel laufen. Ich denke nicht, dass das der idiomatische Weg ist, dies zu tun, aber es funktioniert.
Verwendung von sbt Warze-Entferner würde wahrscheinlich, dass jede Schlussfolgerung fangen. –
Meinst du 'durch io.stdOutLines', ohne' tcp.lift'? Es scheint aber immer noch nichts aus dem Strom zu ziehen. –
Ok - mit dem 'tcp.lift' entfernt, funktioniert das, aber beachte, dass du' p.map (_. Run.run) .run.run' haben musst, um die inneren Prozesse zu starten. –