dot-cafe / beam.cafe

🌠 Blazing fast file transfer app focused on user-experience. Fastest way to share files without uploading them.
https://beam.cafe
MIT License
437 stars 14 forks source link

WebRTC, "P2P" and E2E #3

Open simonwep opened 4 years ago

simonwep commented 4 years ago

As many of you stated in the Reddit Post, beam.cafe isn't real P2P - yes it does stream files from one end to another and filesharing is done secretly but it does pass through the backend of beam.cafe.

I've never worked with WebRTC so far but many of you told me that it allows true P2P connections, so I'll definitely take a look at that and see how this could be integrated in the current structure.

Another option would be adding E2E using the crypto api, not sure if this is possible performance-wise.

Any ideas, ressources regarding WebRTC and suggestions are highly appreciated!

Technologeek commented 4 years ago

Looks very straightforward to implement with the WebRTC SDK https://webrtc.github.io/samples/src/content/datachannel/filetransfer/

P.S: Love the project looking forward to contributing!

simonwep commented 4 years ago

I've spend the past 2 days thinking about how WebRTC could be added and I decided that it's not possible without dropping the entire backend and doing it all over again. There would have to be two apps, one to serve files (like the main app currently is) and another app to fetch / download data.

WebRTC

The server would only be used as signaling and exchanging RTCIceCandidates / RTCSessionDescription.

So basically, a hypothetical roadmap for a new, WebRTC-based beam.cafe would be:

TDLR: Creating a new application, build from the ashes of the current beam.cafe.

Situation

Not sure if I want to do this, the current way provides some features which are not possible to add in the rtc-way:


The current state requires some kind of mechanism to prevent people from abusing the streaming possibility for whatever, it's like a vpn. Another option would be to add E2E encryption but I don't think that it's worth it doing that as it's very slow and It would lead to limitations.