Update README.md
This commit is contained in:
committed by
GitHub
parent
a555c30db1
commit
4338adc9d5
101
plugin/README.md
101
plugin/README.md
@@ -1,102 +1 @@
|
|||||||
# 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
|
|
||||||
|
|
||||||
[](https://youtu.be/E8cUaPrAlzE)
|
|
||||||
|
|
||||||
|
|
||||||
## Try Demo
|
|
||||||
|
|
||||||
For demo, you can visit https://laplace.madeby.monster/
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ 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
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ 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.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ ./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.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ ./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](https://choosealicense.com/licenses/mit/)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user