jbenet / jbenet/random-ideas

JRFC 34 - Streamer - A Stream Multiplexing Interface

Open
#34 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
328
Forks
12
PR merge metrics
No merged PRs in 30d

Description

# Streamer - A Stream Multiplexing Interface

There are many ways to do stream muxing (multiplexing). Many transports offer their own stream multiplexing, for example:
- SSH
- QUIC
- HTTP/2
- WebRTC

These often differ in how to handle flow control, congestion, priorities, stream hierarchies, and so on. The interfaces different and are often incomplete. They requires knowing much about the specific transport in question, which forces applications to understand the stream muxing library.

This is a great moment to standardize a common API. We should have
- a standard, **cross-platform** interface for stream-multiplexors
- a default implementation that works over any reliable stream (e.g. TCP)
- native implementation wrappers
- [polyfill](http://en.wikipedia.org/wiki/Polyfill) for missing features
- interfaces for both simple streams (no config) and advanced features (priorities, etc)

---

Links:
- Muxado: https://github.com/inconshreveable/muxado/tree/wip
- HTTP2: https://http2.github.io/http2-spec/#StreamsLayer
- WebRTC: http://w3c.github.io/webrtc-pc/#peer-to-peer-data-api
- QUIC: https://docs.google.com/document/d/1RNHkx_VvKWyWg6Lr8SZ-saqsQx7rFV-ev2jRFUoVD34/mobilebasic#h.zd2x76sign3y

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.