chris-hristov-itgKm0zOdzQ-unsplash.jpg

ZStreamとFs2Streamを相互変換する

 
0
このエントリーをはてなブックマークに追加
Kazuki Moriyama
Kazuki Moriyama (森山 和樹)

ZIOを使ってサーバーを立てるときたまにwebsocketを使用したい時がある。
内部的にはZStreamを使用しているので、後はそれをhttp serverにつなぎこむだけなのだが、今の所ZIO×http serverのstableなライブラリはない。
そんなときによくhpp4sでサーバーを立て、ZStreamをfs2Streamに変換してwebsocketを実装している。
そのやり方。

zio.stream.interop.fs2zを使う

変換と言ってもすでにライブラリ側で実装されてるのでそれを使うだけ。

まずはinteropを依存に含める。

libraryDependencies += "dev.zio" %% "zio-interop-cats" % <Version>

その後importして使うだけ。

import zio.stream.interop.fs2z.\_
import zio.stream.\_

object A {
  val zs: ZStream\[Any, Throwable, String\] = ???
  val fss: fs2.Stream\[ZIO\[Any, Throwable, \*\], String\] = zs.toFs2Stream
  val zs2: ZStream\[Any, Throwable, String\] = fss.toZStream
}

zioは書くライブラリとのinteropが多数用意されていて非常に運用が楽。
info-outline

お知らせ

K.DEVは株式会社KDOTにより運営されています。記事の内容や会社でのITに関わる一般的なご相談に専門の社員がお答えしております。ぜひお気軽にご連絡ください。