In this hands on lab, we’ll walk through the process of creating a video streaming server. One part of the process will be capturing video and pushing it into a server, while the other part will be creating a server that will take in a stream and reproduce it, live, for any web client which connects.
This tutorial will cover the nuts and bolts of wiring reactive data streams together, while handling inconsistent flow rates with backpressure and buffers. The entire application will be written in Java 8 using the Akka Streams and Akka Http libraries.
This session will cover the new reactive-streams API as it exists inside Akka. We’ll start off by installing the Activator “tutorial” tool to quickly bootstrap a working build.
From there, we’ll work on streaming video in a client. We’ll be using the java.awt.Robot for (slow) desktop capture, and piping the result to a server.
Once we have a video stream, it’s time to implement the Video server. The server will pipe the received input to all clients, including dropping frames for slow clients while not affecting fast clients. We’ll use this exercise to discuss various back-pressure/backoff tactics for slow connections. This section is where we’ll spend the most time, with a few various strategies tried.
At the end of the two hours, with the help of some pre-existing code, the attendees should understand the trade-offs in stream design based on hands-on experience with the effects.
Sign in to add slides, notes or videos to this session