[HN Gopher] Free, P2P, disposable group video calling app for th...
       ___________________________________________________________________
        
       Free, P2P, disposable group video calling app for the web
        
       Author : vasanthv
       Score  : 74 points
       Date   : 2022-12-23 16:04 UTC (6 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | dtx1 wrote:
       | Does this work if everyone is behind a different NAT? If so, how?
        
         | lxgr wrote:
         | WebRTC is pretty good at getting through complex NAT
         | constellations, trying to punch through NATs via STUN/ICE and
         | falling back to TURN in case that fails (but the latter
         | requires a central coordination server).
         | 
         | It only needs a lightweight signalling server to relay each
         | client's ICE candidates (which is more or less an opaque string
         | to the server) to their peers, and if that succeeds, they can
         | communicate P2P (audio, video, and even opaque byte streams).
         | 
         | All of the complex NAT traversal logic and the encrypting P2P
         | protocol stack is baked into all modern browsers (or non-
         | browser clients using a WebRTC library); the only thing that's
         | needed is the signalling server, and practically a STUN server
         | to facilitate ICE (but these use very little bandwidth and
         | there are public ones available).
        
       | omeze wrote:
       | This is awesome. I wonder why no modern browsers have this baked
       | in.
        
       | codetrotter wrote:
       | Is node and npm required only for building the project, or also
       | for running it?
       | 
       | In other words, can this run if I upload the html, js and other
       | files to static hosting?
        
         | lioeters wrote:
         | I'm not associated with the project, but I found that it's not
         | a static site. Node.js is required for the thin WebSocket
         | layer.
         | 
         | https://github.com/vasanthv/talk/blob/master/server.js
         | 
         | The actual P2P handshake is done through these default ICE
         | servers defined in the client script.
         | 
         | https://github.com/vasanthv/talk/blob/master/www/script.js
         | const ICE_SERVERS = [         { urls:
         | "stun:stun.l.google.com:19302" },         { urls:
         | "turn:openrelay.metered.ca:443", username: "openrelayproject",
         | credential: "openrelayproject" },       ];
        
       | xorcist wrote:
       | What are my options for running a larger scale web conferences
       | (up to a thousand endpoints perhaps, handful of them speaking)
       | with free software and regular web browsers involved?
       | 
       | I guess past a certain point it's more like streaming than group
       | calls. What have larger f/oss events such as FOSDEM used during
       | the pandemic and what did they have to change to get it to scale?
        
       | vasanthv wrote:
       | Talk is a free, peer-to-peer, disposable group video calling app
       | for the web.
       | 
       | Works in all major browsers.
       | 
       | No signups. No downloads. 100% peer-to-peer.
        
         | lxgr wrote:
         | > 100% peer-to-peer.
         | 
         | Is this even possible with WebRTC? How do clients initially
         | learn about each other's IP addresses and ports?
         | 
         | There seems to be some logic to facilitate that in the server
         | code: https://github.com/vasanthv/talk/blob/master/server.js
        
           | clemensley wrote:
           | I agree, this is super cool but it's not 100% peer to peer as
           | WebRTC requires a central server to establish the connection
           | as far as I know.
        
             | koolala wrote:
             | Is LAN P2P? If yes, WebRTC is 100% P2P over LAN is it not?
        
               | lucb1e wrote:
               | I still think the clients need a coordination server to
               | discover each other (won't use multicast/broadcast
               | traffic). You could probably make a browser that does
               | this, but if they already do then I am not aware of it.
        
         | backspace_ wrote:
         | If it's disposable, how many uses can you get out of it before
         | it is worn out and has to be replaced?
        
       | gnicholas wrote:
       | This is great, since many people are looking to get away from
       | Zoom. I was on a call the other day that was hosted by a very
       | large startup (raised $200M). They had to end the call at 40 mins
       | "because of our subscription tier".
       | 
       | If companies this big don't want to pay a penny to Zoom, that's
       | saying something! It doesn't mean there's a great market
       | opportunity for a paid tool, but it does mean that free tools
       | will get good usage. I'm looking forward to the normalization of
       | Jitsi and other alternatives, so people don't think I'm a weirdo
       | for sending out links to services they've never heard of.
        
       | guerrilla wrote:
       | Is this like jump.chat where you share links? What's meant by
       | disposable?
        
         | forgotpwd16 wrote:
         | Yes, it's similar. This one is also open source so can be self-
         | hosted. JumpChat also has file share I see.
        
       | boredumb wrote:
       | Very neat. Nice to see more free and easy p2p stuff. Getting a
       | p2p video/audio/screen share application going is definitely a
       | lot less work than it once was. https://teamvideo.app/
       | 
       | webRTC stuff has a ton of cool potential for p2p projects,
       | hopefully more and more of it starts cropping up.
        
         | klabb3 wrote:
         | The issue is that webrtc is very complex, bloated and hard to
         | debug. It's the only way to do browser based p2p though.
         | 
         | Plug: I'm working on a much simpler server-assisted p2p lib
         | with relay fallback, over tcp, with BYO identity/auth. This is
         | certainly for different use cases, but I thought I'd mention
         | it. If anyone is interested, I'd be curious about your use
         | cases.
        
           | forgotusername6 wrote:
           | Which parts are complex? I got a webrtc video chat app up and
           | running from nothing in a weekend.
        
             | klabb3 wrote:
             | The protocol and spec mostly, but also the establishment
             | dance and too many knobs. Which client and server libs are
             | you using? Chances are if you dig in their deps it's messy.
             | 
             | It's also designed for real-time video and audio (udp), so
             | reliable high-bandwidth streaming p2p apps takes a back
             | seat.
             | 
             | That doesn't mean it's not the right choice to build stuff
             | with today, especially browser based real-time apps! I'm
             | all for webrtc getting easier.
        
               | forgotusername6 wrote:
               | I didn't use anything other than the basic webrtc
               | examples from github and a rather basic exchange using a
               | web socket (server was express). Obviously not completely
               | P2P because you need to exchange capabilities somehow.
               | Tbh it probably took me longer to get the domain and
               | coturn set up than the webrtc.
               | 
               | I didn't look into how much bandwidth was being used. I
               | was mainly using it for 1-4 person calls during lockdown.
               | I wanted to write a video calling app that I could have
               | full control of.
        
       | mp85 wrote:
       | With great pleasure I contributed to this fantastic project!
       | Simple and functional! If someone have pleasure, can try also the
       | p2p - sfu - c2c versions of mirotalk:
       | https://github.com/miroslavpejic85 A happy weekend to everyone
       | and a merry Christmas!
        
         | lucakiebel wrote:
         | Hey! We were using mirotalk for p2p video consultations, but
         | switched to jitsi because of the google translate integration.
         | I know searching for all strings and replacing them with
         | placeholders is a giant task, but google is really bad at
         | translating single words without context
        
       | folkrav wrote:
       | > The sweet number is somewhere around 6 to 8 people in an
       | average high-speed connection.
       | 
       | Based on mesh architecture WebRTC, so unfortunately not really an
       | option for anything but small calls. WebRTC is fun, but in the
       | end, someone has to do the encoding, and w/ mesh, the client pays
       | the price.
        
         | koolala wrote:
         | 6 to 8 people is a lot even without using Star-Configuration
         | WebRTC. For example, how many people do you talk to at once
         | face to face in real life in an average group? 4 to 6 people
         | calls its like the size of a normal table at a restaurant. It
         | is the typical group conversation. You could argue large group
         | calls become more and more unnatural after 8 total people.
        
         | lxgr wrote:
         | The issue isn't really encoding but bandwidth, specifically
         | upload bandwidth (due to needing to send your own stream to all
         | n-1 other participants rather than just one SFU, which then
         | fans out to n streams).
         | 
         | Many popular group video call solutions are end-to-end
         | encrypted these days, so there isn't any re-encoding happening.
        
           | bobkazamakis wrote:
           | >Many popular group video call solutions are end-to-end
           | encrypted these days, so there isn't any re-encoding
           | happening.
           | 
           | What format do you think an end2end encrypted video comes in
           | over the wire?
        
             | lxgr wrote:
             | SRTP, in most cases, at least for point-to-point
             | encryption.
             | 
             | I'm not too sure about end-to-end encryption in WebRTC,
             | though; I remember reading that something different happens
             | there [1].
             | 
             | [1] https://webrtchacks.com/you-dont-have-end-to-end-
             | encryption-... and https://webrtchacks.com/true-end-to-end-
             | encryption-with-webr...
        
       | forgotpwd16 wrote:
       | Looks cool. Usually, when needing something like this, I use
       | Jitsi Meet but having options is nice.
        
         | gnicholas wrote:
         | Can someone explain how the two differ (either technically, or
         | from the perspective of a use who just wants
         | reliable/easy/private calls)? I've started using jitsi more
         | because of Zoom's time limit enforcement, but I'm looking for
         | alternatives also.
        
       | koolala wrote:
       | How many concurrent users can it support on a single cheap nodejs
       | server? Or is the client the bottleneck?
        
         | TranquilMarmot wrote:
         | Since it's all peer-to-peer, there isn't anything being done on
         | the server (I don't even think there is a server?)
         | 
         | Like others have said, the bottleneck will be your client's
         | upload speed- if you have a meeting with 10 people, you're
         | going to be sending your video out to 10 different peers.
        
       ___________________________________________________________________
       (page generated 2022-12-23 23:01 UTC)