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

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Laplace

Libdatachannel
C/C++ WebRTC Data Channels and Media Transport standalone library
Stars: ✭ 336 (+314.81%)
Mutual labels:  websocket, webrtc, peer-to-peer
Laverna
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
Eureca.io
eureca.io : 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
Camus
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
🧩 Monibuca is a Modularized, Extensible framework for building Streaming Server
Stars: ✭ 307 (+279.01%)
Mutual labels:  websocket, webrtc
Sharedrop
Easy P2P file transfer powered by WebRTC - inspired by Apple AirDrop
Stars: ✭ 5,222 (+6346.91%)
Mutual labels:  webrtc, peer-to-peer
Briefing
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
Oorja
[archived] effortless video-voice chat with realtime collaborative features. extensible using react components 🙌
Stars: ✭ 270 (+233.33%)
Mutual labels:  webrtc, peer-to-peer
Zlmediakit
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
Biubiu
弹幕视频与直播网站
Stars: ✭ 266 (+228.4%)
Mutual labels:  websocket, webrtc
peerjs-python
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
Deershare
小鹿快传,一款在线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
Gfile
Direct file transfer over WebRTC
Stars: ✭ 598 (+638.27%)
Mutual labels:  webrtc, peer-to-peer

Laplace

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: https://youtu.be/E8cUaPrAlzE

Laplace for gaming

Try Demo

For demo, you can visit https://laplace.madeby.monster/

Website screenshot

Motivation

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.

Installation

Build from source

$ git clone https://github.com/adamyordan/laplace.git
$ 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 "0.0.0.0:443")
  -certFile string
        TLS cert file (default "files/server.crt")
  -keyFile string
        TLS key file (default "files/server.key")
  -tls
        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: 0.0.0.0:443

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

Contributing

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

License

MIT

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].