Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Group calls? #13

Open
andreas1107 opened this issue Oct 1, 2022 · 5 comments
Open

Feature: Group calls? #13

andreas1107 opened this issue Oct 1, 2022 · 5 comments

Comments

@andreas1107
Copy link

Hi, great work with WebCall!

Just wondering if you have any intent to implement RTC group calls to WebCall:

https://superuser.com/questions/1609118/webrtc-for-group-calling

Thanks!

@andreas1107
Copy link
Author

Sorry, probably this issue should go into the other repo: https://github.com/mehrvarz/webcall

@mehrvarz
Copy link
Owner

mehrvarz commented Oct 2, 2022

Hi. Here my thoughts on the matter.

Connecting two WebRTC clients with each other is cheap. From the pov of the server it "costs" less than 100 KB traffic per call. And once connected the clients can stay connected for as long as they like. No server is needed for that.

Three or more clients and all traffic needs to be relayed. One 10 minute 3-party audio-only call will generate about 20 MB of traffic. This is a 200 fold increase. More participants? Longer calls? Video? Waaaaay more traffic.

If you run a server with a certain traffic budget, then more traffic per call means less calls per month. I am able to offer a free and completely unrestricted service based on P2P communications. There is little cost and good benefit. I would NOT know how to do the same with a group talk feature. Someone would need to pay for the 200x increase in traffic.

One more thing to consider: Relaying (via remote server) does at least double your latency. But for a live, two-way conversations you want as little latency as possible. Please compare the actual media quality of your favorite group talk solution vs. WebCall if you have a chance.

@OdinVex
Copy link

OdinVex commented Apr 16, 2023

Why would clients connecting to each other and transmitting to each other (all without server) result in such traffic? Each client can send traffic to each client, straight forward and offloaded to clients. Think “bidirectional” mesh network as a group call. Or perhaps consider that Alice calls Bob, Bob adds Dave to the call by initiating a bidirectional to Dave and Dave's traffic goes through Bob to get to Alice. That way there is link redundancy and fail-over if Dave can't communicate to Alice but can to Bob.

@mehrvarz
Copy link
Owner

Mobile devices relaying realtime audio/video data (from other peers to other peers) is not realistic due to severe latency.

For P2P group calls (without client-side relaying), each peer needs to handle data from and to (n-1) peers in realtime fashion. This will quickly stop working (cpu load, network load) with a low number of peers, even under ideal conditions.

The only practical solution for group calls is server-side multiplexing. Only 3 disadvantages:

  • server needs to handle shi*load$ of data
  • you get noticeably more latency/delay than over a direct P2P WebRTC link
  • you lose E2EE (server can record your conversations)

@OdinVex
Copy link

OdinVex commented Apr 17, 2023

Mobile devices relaying realtime audio/video data (from other peers to other peers) is not realistic due to severe latency.

And yet Voice over LTE is a thing, carries all audio over data now-days. (4G-LTE+)

For P2P group calls (without client-side relaying), each peer needs to handle data from and to (n-1) peers in realtime fashion. This will quickly stop working (cpu load, network load) with a low number of peers, even under ideal conditions.

Are you trying to say any audio-chatting apps with P2P is impossible without even trying to provide an actual technical reason? There are plenty of functional apps on Android that do this. Just use client-side relaying and/or muxing of audio, keeps bandwidth down, provides network failover. If other softwares are doing the same thing and can handle thousands of users simultaneously, I'm going to trust that it can be done. Server-side muxing, a simple Raspberry Pi running Mumble can handle a decent number of audio sessions before getting fussy, though that assumes each user is able to use the same codecs for considering bandwidth. Assuming max Opus bit-rate, a common US home has enough upstream to handle a minimum of 10 users. Note, most US internet is crappier than ISPs publicly state. I'm imagining Mumble or TeamSpeak, but for Android and with client-side relaying for the entire concept of P2P... *shrug*

As far as server-side handling of data, you don't need to give up E2EE. You can give up who is talking to who privacy, but you do not have to give up what the contents are. Think XMPP, which is pretty much exactly what WebCall is attempting to achieve as far as Jingle and such goes. Optional server-relaying, but E2EE. Video enabled, too. I use it with Android.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants