Skip to content
This repository has been archived by the owner on Mar 13, 2021. It is now read-only.

projectriff/streaming-http-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HTTP to riff streaming Adapter

This repository hosts a generic http proxy that can be embedded by riff function buildpacks to enhance function invokers that only support the riff streaming protocol (based on gRPC) and thus get http request/reply "for free".

Any streaming function that accepts a single input stream and produces a single output stream can be leveraged by that adapter. The adapter wraps the http request into an input stream of size one. After invocation, the output stream (which must also be of size one) is turned into the http response.

When an invoker also supports promotion of a simple request/reply function to a streaming function (by virtue of streamOut = streamIn.map(fn)), this allows support of the basic http request/reply interaction automatically.

Usage and Behavior

The go executable produced by this repository acts both as a simple http proxy, and the parent of the actual function invoker process (buildpacks having only entry point).

Let’s assume you want to add http capability to a node function invoker (that then doesn’t need to worry about http support, but only focus on gRPC streaming support). Also assume that the invoker is usually invoked via node server.js and that gRPC support is listening on port 8081 (the default).

Simply replace that entry point with streaming-http-adapter node server.js and the adapter will fork the node process, coupling its lifecycle to its own.

The best way to use this executable is to leverage it as an optional buildpack in a builder definition. See http://github.com/projectriff/streaming-http-adapter-buildpack to that end.