Nie udało mi się uzyskać prostego przykładowego strumienia wirowania, czytania z TCP i pisania na standardowe wyjście.Jak czytać z TCP i pisać na standardowe wyjście?
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
Po prostu tam siedzi, nie drukuje niczego.
Próbowałem również różne rozwiązania z wykorzystaniem to
, zawsze z tcp.lift
zaklęcia, aby uzyskać Process[Connection, A]
, w tym
tcp.server(addr, concurrentRequests = 1)(src) map (_ to tcp.lift(io.stdOutLines))
który nawet nie skompilować.
Czy muszę wye
źródła i wydrukować strumieni razem? Przykład znaleziony na original pull request dla zastąpieniewydaje się to wskazywać, ale wye
wydaje się już nie istnieć na Process
, więc zamieszanie panuje niestety.
Edit okazuje się, że oprócz problemów typu wyjaśnione przez Pawła, trzeba także uruchomić wewnętrzne procesy „ręcznie”, na przykład wykonując p.map(_.run.run).run.run
. Nie sądzę, że jest to idiomatyczny sposób, aby to zrobić, ale to działa.
Korzystanie z narzędzia do usuwania brodawek sbt prawdopodobnie złapie to jako Dowolne wnioskowanie. –
Masz na myśli 'przez io.stdOutLines', bez' tcp.lift'? Wciąż jednak nie wydaje się, by cokolwiek wyszło z potoku. –
OK - z usuniętym 'tcp.lift', to działa, ale zauważ, że musisz' p.map (_. Run.run) .run.run', aby uruchomić wewnętrzne procesy. –