Demonstration of a browser connecting to Pion WebRTC without a signaling server.

Overview

Pion WebRTC
Offline Browser Sync

WebRTC without a signaling server!

Pion webrtc Slack Widget
License: MIT


This repo demonstrates how you can connect two WebRTC proccesses without signaling. No configuration is needed ahead of time, so no hardcoding of IP Addresses. The peers use mDNS to connect to each other, and have pre-set ICE Credentials and DTLS Certificates.

Running

  • git clone https://github.com/pion/offline-browser-communication.git
  • cd offline-browser-communication
  • go run *.go
  • Open https://jsfiddle.net/ehnpzrfx/

You should see the following in your terminal.

Ready to connect, please load https://jsfiddle.net/ehnpzrfx/
Connection State has changed checking
Connection State has changed connected
DataChannel foo has opened

If everything worked you can now send messages from your browser to your terminal!

What this means

This means you can have two devices connect without any setup. No need to setup a server, or native apps with more control.

You could build stuff like.

  • Sync data between two PWA without a backend
  • Have a multiplayer game that never leaves your network
  • Build a conferencing/chat app that doesn't require any setup
  • Please share your cool ideas with us!

FAQ

Is this secure?

No currently everything is hardcoded, this is just a demonstration. I believe this could be reasonably secure if seeded properly. Better to ask a security person though.

What platforms are supported?

OSX and Linux

What browsers work?

Only Chromium so far. If there is interest I would like to support more

What libraries/dependencies does this use

Only Pion WebRTC it is a full Go implementation of WebRTC. It has zero C/C++ usage.

What is next?

I would like to get this into the IETF/W3C, but as an individual I am unable to be involved. If you are interested and have membership please reach out!

I want to talk about cool WebRTC stuff!

Join the Pion Slack

I need to update the DTLS Fingerprint

If you see an error like InvalidAccessError: x509Cert expired the certificate has expired. You can update it by following these instructions. Please submit a PR with the updated certificate as well, thanks!

  // Create new certificate
  openssl ecparam -out key.pem -name prime256v1 -genkey
  openssl req -new -sha256 -key key.pem -out server.csr
  openssl x509 -req -sha256 -days 365 -in server.csr -signkey key.pem -out cert.pem

  // Create new fingerprint for jsfiddle
  openssl x509 -noout -fingerprint -sha256 -inform pem -in cert.pem

Community

Pion has an active community on the Golang Slack. Sign up and join the #pion channel for discussions and support. You can also use Pion mailing list.

We are always looking to support your projects. Please reach out if you have something to build!

If you need commercial support or don't want to use public methods you can contact us at [email protected]

License

MIT License - see LICENSE for full text

Issues
Owner
Pion
The Open Source, Cross Platform Stack for Real-time Media and Data Communication.
Pion
Selfhosted collaborative browser - room management for n.eko

neko-rooms Simple room management system for n.eko. Self hosted rabb.it alternative. How to start You need to have installed Docker and docker-compose

Miroslav Šedivý 170 Jun 21, 2022
a simple http server as replacement of python -m http.server

ser a simple http server as replacement of python -m http.server

Changkun Ou 4 Feb 16, 2022
OpenAPI specs for your Go server, generated at server runtime. No CLI, no code generation, and no HTTP

Overview "oas" is short for "OpenAPI Spec". Go package for generating OpenAPI docs at runtime. Non-features: No code generation. No CLI. No magic comm

Nelo Mitranim 0 Dec 3, 2021
A Language Server Protocol (LSP) server for Jsonnet

Jsonnet Language Server A Language Server Protocol (LSP) server for Jsonnet. Features Jump to definition self-support.mp4 dollar-support.mp4 Error/War

Grafana Labs 56 Jun 24, 2022
Go web server - A web server that can accept a GET request and serve a response.

go_web_server A web server that can accept a GET request and serve a response. Go is a great language for creating simple yet efficient web servers an

Gilbert Ngeno 0 Jan 3, 2022
:tophat: Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support

Web server with built-in support for QUIC, HTTP/2, Lua, Markdown, Pongo2, HyperApp, Amber, Sass(SCSS), GCSS, JSX, BoltDB (built-in, stores the databas

Alexander F. Rødseth 2k Jun 25, 2022
Fast, multi-platform web server with automatic HTTPS

a project Every site on HTTPS Caddy is an extensible server platform that uses TLS by default. Releases · Documentation · Get Help Menu Features Insta

Caddy 41.4k Jun 27, 2022
A simple SHOUTcast server.

DudelDu DudelDu is a simple audio/video streaming server using the SHOUTcast protocol. Features Supports various streaming clients: VLC, ServeStream,

Matthias Ladkau 136 Apr 20, 2022
A feature flag solution, with only a YAML file in the backend (S3, GitHub, HTTP, local file ...), no server to install, just add a file in a central system and refer to it. 🎛️

??️ go-feature-flag A feature flag solution, with YAML file in the backend (S3, GitHub, HTTP, local file ...). No server to install, just add a file i

Thomas Poignant 447 Jun 29, 2022
An XMPP server written in Go (Golang).

jackal An XMPP server written in Go. About jackal is a free, open-source, high performance XMPP server which aims to be known for its stability, simpl

Miguel Ángel Ortuño 1.3k Jun 25, 2022
A proxy server than converts JSON request bodies to protocol buffers

Welcome to Protoxy ?? What is Protoxy? Protoxy allows you to test your REST APIs that use Protocol Buffer serialization through Postman and other API

null 24 May 21, 2022
High-performance PHP application server, load-balancer and process manager written in Golang

[RR2-BETA] RoadRunner is an open-source (MIT licensed) high-performance PHP application server, load balancer, and process manager. It supports runnin

Spiral Scout 6.5k Jun 22, 2022
Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob

SFTPGo Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support, written in Go. Several storage backends are supporte

Nicola Murino 4.4k Jun 27, 2022
Heart 💜A high performance Lua web server with a simple, powerful API

Heart ?? A high performance Lua web server with a simple, powerful API. See the full documentation here. Overview Heart combines Go's fasthttp with Lu

Hyperspace Logistics 75 Jun 22, 2022
The Galène videoconferencing server

The Galène videoconferencing server

Juliusz Chroboczek 643 Jun 22, 2022
A push notification server written in Go (Golang).

A push notification micro server using Gin framework written in Go (Golang)

Bo-Yi Wu 6.4k Jul 1, 2022
KissLists is a very simple shared lists server

KissLists is a very simple shared lists server. with mobile optimised design basic theme support websockets messages sqlite database but no

Vincent Lark 37 Feb 18, 2022
⚡ A fast, lightweight, and secure chat protocol, client and server, written in Go.

⚡ A fast, lightweight, and secure chat protocol, client and server, written in Go.

Bolt 16 Jan 19, 2022