All Projects → adamyordan → Laplace

adamyordan / Laplace

Licence: mit
Laplace is an open-source project to enable screen sharing directly via browser. Based on WebRTC for low latency peer-to-peer connections, and WebSocket implemented in golang for signaling.

Programming Languages

184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Laplace

C/C++ WebRTC Data Channels and Media Transport standalone library
Stars: ✭ 336 (+314.81%)
Mutual labels:  websocket, webrtc, peer-to-peer
Laverna is a JavaScript note taking application with Markdown editor and encryption support. Consider it like open source alternative to Evernote.
Stars: ✭ 8,770 (+10727.16%)
Mutual labels:  websocket, webrtc, peer-to-peer : a nodejs bidirectional RPC that can use WebSocket, WebRTC or XHR fallback as transport layers
Stars: ✭ 341 (+320.99%)
Mutual labels:  websocket, webrtc
Semana Javascript Expert02
Exemplos de código da segunda semana Javascript Expert - Zoom Clone
Stars: ✭ 534 (+559.26%)
Mutual labels:  websocket, webrtc
Peer-to-peer group video chat using WebRTC, Python, and Javascript
Stars: ✭ 75 (-7.41%)
Mutual labels:  webrtc, peer-to-peer
Vosk Server
WebSocket, gRPC and WebRTC speech recognition server based on Vosk and Kaldi libraries
Stars: ✭ 277 (+241.98%)
Mutual labels:  websocket, webrtc
🧩 Monibuca is a Modularized, Extensible framework for building Streaming Server
Stars: ✭ 307 (+279.01%)
Mutual labels:  websocket, webrtc
Easy P2P file transfer powered by WebRTC - inspired by Apple AirDrop
Stars: ✭ 5,222 (+6346.91%)
Mutual labels:  webrtc, peer-to-peer
Secure direct video group chat
Stars: ✭ 710 (+776.54%)
Mutual labels:  websocket, webrtc
Uproxy P2p
Internet without borders
Stars: ✭ 798 (+885.19%)
Mutual labels:  webrtc, peer-to-peer
Peer Calls
Group peer to peer video calls for everyone written in Go and TypeScript
Stars: ✭ 837 (+933.33%)
Mutual labels:  webrtc, peer-to-peer
[archived] effortless video-voice chat with realtime collaborative features. extensible using react components 🙌
Stars: ✭ 270 (+233.33%)
Mutual labels:  webrtc, peer-to-peer
WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181 server and client framework based on C++11
Stars: ✭ 5,248 (+6379.01%)
Mutual labels:  websocket, webrtc
Decentralized Video Chat
🚀 Zipcall- Acquired @ 250k users 🚀 Peer to peer browser video calling platform with unmatched video quality and latency.
Stars: ✭ 3,284 (+3954.32%)
Mutual labels:  webrtc, peer-to-peer
Stars: ✭ 266 (+228.4%)
Mutual labels:  websocket, webrtc
Python port of PeerJS client
Stars: ✭ 56 (-30.86%)
Mutual labels:  webrtc, peer-to-peer
Serverless Webrtc Signaling Server
Serverless WebRTC Signaling Server only works for WebRTC P2P.
Stars: ✭ 65 (-19.75%)
Mutual labels:  websocket, webrtc
小鹿快传,一款在线P2P文件传输工具,使用WebSocket + WebRTC技术
Stars: ✭ 251 (+209.88%)
Mutual labels:  websocket, webrtc
Opentok Ios Sdk Samples
Example applications that use the OpenTok iOS SDK
Stars: ✭ 186 (+129.63%)
Mutual labels:  screencast, webrtc
Direct file transfer over WebRTC
Stars: ✭ 598 (+638.27%)
Mutual labels:  webrtc, peer-to-peer


Laplace is an open-source project to enable screen sharing directly via browser. Made possible using WebRTC for low latency peer-to-peer connections, and WebSocket implemented in golang for WebRTC signaling.

Demo video:

Laplace for gaming

Try Demo

For demo, you can visit

Website screenshot


There are already possible solutions to share your computer screen, e.g. TeamViewer. But most of them require installations of software or plugins. What Laplace provides is a simple solution to this problem. For users wanting to share their screen, all they need to do is to open a website page with their browsers, clicking some buttons, then share some session ID with their peers. No installation or registration required.

Solving the latency problem

This project also serves as a proof-of-concept (PoC) for screen sharing capability directly in browsers based on WebRTC. Using WebRTC, real-time communication is made possible through peer-to-peer connections. This proves to be very useful in solving one of the biggest problems is screen streaming: Latency. The latency represents how long the delay is from the source to transmit to the remote client. If you notice, this latency problem is usually highlighted by game streaming services, since gameplay relies heavily on the interactivity of inputs and outputs.

Low server cost

This solution also solves the server cost problem, since the expensive operations (encoding and transmission) are done on client browsers. The server is only needed for serving frontends and for WebRTC signaling.

Possible Use Cases

  • Game streaming from PC to mobile devices.
  • Collaborative work where you need to share your screen with remote coworkers.
  • Mirroring presentation slides and demonstrations.


Build from source

$ git clone
$ cd laplace && go build -o laplace main.go
$ ./laplace --help

OR, pull the pre-built docker image

$ docker pull adamyordan/laplace
$ docker run adamyordan/laplace ./laplace --help

Program Execution

Executing this project basically serves an HTTP server that will host the frontend and the WebSocket implementation. Note that you sometimes need to run HTTPs in order for browser to connect to websocket.

$ ./laplace --help
  -addr string
        Listen address (default "")
  -certFile string
        TLS cert file (default "files/server.crt")
  -keyFile string
        TLS key file (default "files/server.key")
        Use TLS (default true)

By default, you can run the executable without any argument to listen to TLS port 443. A self-signed certificate files are provided to ease up development.

$ ./laplace
2020/03/25 01:01:10 Listening on TLS:

You can then open https://localhost:443/ to view Laplace page. You may need to add certificate exceptions. In Chrome, you can type thisisunsafe.


Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.



Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].