Giter VIP home page Giter VIP logo

finch-streaming-demo's Introduction

Streaming client

scala> val c = Http.client.withStreaming(enabled = true).newService(":8081")

scala> val stream = new Streaming(c)

Print each chunk

scala> val e = asyncBody.mapAsync(as => as.foreach(x => println(Buf.Utf8.unapply(x))))
e: io.finch.Endpoint[Unit] = body

Sum numbers (streaming request)

scala> val e = asyncBody.mapAsync(as => as.foldLeft(0)((acc, x) => acc + BufTo.int(x)).map(_.toString))
e: io.finch.Endpoint[String] = body

Stream random numbers from server to client (streaming response)

Pause-less

scala> def rand(n: Int): AsyncStream[Int] = if (n == 0) AsyncStream.empty else scala.util.Random.nextInt +:: rand(n - 1)
rand: (n: Int)com.twitter.concurrent.AsyncStream[Int]

scala> val e = Endpoint(Ok(rand(100).map(x => Buf.Utf8(x.toString))))
e: io.finch.Endpoint[com.twitter.concurrent.AsyncStream[com.twitter.io.Buf]] =

Delayed

scala> def rand(n: Int): AsyncStream[Int] = if (n == 0) AsyncStream.empty else scala.util.Random.nextInt +:: rand(n - 1)
rand: (n: Int)com.twitter.concurrent.AsyncStream[Int]

scala> val e = Endpoint(Ok(rand(100).mapF(x => Future.sleep(1.second).map(_ => Buf.Utf8(x.toString)))))
e: io.finch.Endpoint[com.twitter.concurrent.AsyncStream[com.twitter.io.Buf]] =

Sum so far (end to end)

scala> val e = asyncBody.map { as =>
     | var sumSoFar = 0
     | as.map { buf => sumSoFar += BufTo.int(buf); Buf.Utf8(sumSoFar.toString) }
     | }
e: io.finch.Endpoint[com.twitter.concurrent.AsyncStream[com.twitter.io.Buf]] = body

finch-streaming-demo's People

Contributors

vkostyukov avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.