Giter Site home page Giter Site logo

awesome-pion's Introduction

Awesome Pion Awesome

A curated list of awesome things related to Pion

Resources

Community

Examples

Deployments

Tools

Talks

Projects Using Pion

Media API

DataChannel

Other APIs

  • aler9/rtsp-simple-server - Ready-to-use RTSP / RTMP / LL-HLS server and proxy that allows to read, publish and proxy video and audio streams
  • netbirdio/netbird - A Wireguard-based VPN which transports datagrams over an pion/ice connection.
  • stv0g/cunicu - Another Wireguard-based VPN which transports datagrams over an pion/ice connection.
  • l7mp/stunner - A Kubernetes ingress gateway for WebRTC.

Companies Using Pion

Contribute

Contributions welcome! Read the contribution guidelines first.

License

CC0

To the extent possible under law, Pion has waived all copyright and related or neighboring rights to this work.

awesome-pion's People

Contributors

adwpc avatar clone1018 avatar daonb avatar davidzhao avatar emiago avatar fffilimonov avatar fletcherist avatar grantfayvor avatar jakecoffman avatar jech avatar jeremija avatar jonlundy avatar kevmo314 avatar kisasexypantera94 avatar levaitamas avatar manishiitg avatar maxhawkins avatar mohammadne avatar nurdism avatar oliverpool avatar piterweb avatar pongraczgabor87 avatar sean-der avatar sethkimmel3 avatar stv0g avatar triptu avatar wawesomenogui avatar wdouglass avatar wmspanel avatar xsbchen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

awesome-pion's Issues

Create rules for projects in the list

@xsbchen what do you think of creating rules for projects in the list?

I think it would be nice to say Projects must be on the latest major version of Pion WebRTC, if they are not maybe we can mark them? It could be a good opportunity for others to help update the projects!

pion-http-proxy (p2p REST/JSON/GRPC over WebRTC)

Summary

There are a lot of use cases for easy p2p communication between browser and edge devices. Most stemming from giving users ultimate privacy and control over their own data. Breaking free of big brother cloud providers that offer convenient collection and "care" of user data.

There are many http client and server libraries, a vast body of knowledge and established best practices (e.g REST, JSON, GRPC) over HTTP(1,2,websockets). Implementations are available for most OS platforms and languages. However there is currently no well established project that solves the combination of the two issues: easy p2p over http APIs.

Developers looking to build web browser supported p2p APIs have to dive deep and master the complicated, unfamiliar, low level WebRTC APIs that are also hard to debug and test.

Motivation

A number of projects in the awesome-pion section approach this problem from slightly different perspectives.
https://github.com/jsmouret/grpc-over-webrtc
https://github.com/duality-solutions/web-bridge
https://github.com/rtctunnel/rtctunnel
https://github.com/keroserene/snowflake
https://github.com/decentraland/webrtc-broker
https://github.com/ailabstw/webrtc-socket-proxy
https://github.com/muka/peerjs-go

Maybe it's worth having a community conversation on joining forces for a minimum viable foundation for http over webrtc that enables other higher level solutions to be built on top.

There are two big sub-topics to cover:

  1. Signaling
  2. Message payload

Signaling

It seems like there is a potential to have a highly available community supported global p2p signaling network of servers.

For example for Ambianic.ai, we rely on the incredibly simple and powerful PeerJS Server that provides an ephemeral, privacy preserving, easy to scale, easy to maintain and extend foundation. We added a peer-room plugin for LAN peer discovery, which solves our use case allowing browser apps to discover and connect to other browser apps or IoT devices on the same WiFi/LAN. The idea and implementation was inspired ShareDrop. More on our particular use case and solution here.

The PeerJS Server deployment has had no unscheduled downtime in 2020 and was last patched over 6 months ago. It's been that reliable, useful and stable.

There are well known community networks for torrents , Tor, Matrix and blockchain support. It only makes sense to have one that has the minimal viable protocol for p2p connectivity that makes no assumptions about how peers will exchange messages once they connect. Nor should it make assumptions about what type of messages will be exchanged.

There is also a growing set of independently maintained public STUN servers, which is the other critical missing piece for p2p comms.

Here is a strawman for a minimal signaling server functionality:

  1. Allow peers to register with a crypto safe PeerID (maybe uuid4)
  2. Ephemeral (memory or cached) storage for registered peers that expires after a minute unless a peer renews its registration.
  3. Allows a peers to send/receive RTC invite/response to/from another peer.

That's essentially what PeerJS Server does today. It has a plug-in architecture that allows higher level signaling protocols to be built on top. Similarly to STUN servers, PeerJS Servers are standalone and can be deployed for a private p2p network or shared with the community for public access.

Can we designate PeerJS Server as the minimum signaling server reference implementation or we need to design something different?

HTTP over WebRTC Payload Format

This problem can be split into stages:

  1. Chunking HTTP/1 request and response payloads into pieces that safely travel over webrtc messages between all recent browser end points and pion. This would solve the vast majority of HTTP API use cases (REST, JSON, GRPC).
  2. Emulate WebSockets sessions.
  3. Emulate HTTP/2 pub/sub notifications.
  4. Other protocol mappings as needed.

An initial primitive implementation for stage 1 on the browser side is available here. A corresponding http-over-webrtc-proxy implementation is available here (in Python).

Describe alternatives you've considered

There a few other OSS projects that have overlapping goals, but broader scope.

libp2p (an IPFS sub-project) has a webrtc subgroup with http over webrtc layer.

The Matrix team is experimenting with p2p comms over http with browser support:

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.