Show HN: Learn how WebRTC actually works. A book on the protocols, not just APIs
webrtcforthecurious.com
webrtcforthecurious.com
I wanted to share all my knowledge from working on these.
------
Come learn about the WebRTC specification and how all the protocols work in depth, not just a tour of the APIs. The book is completely Open Source and available at https://github.com/webrtc-for-the-curious/webrtc-for-the-cur...
Learn the full details of ICE, SCTP, DTLS, SRTP, and how they work together to make up the WebRTC stack.
Hear how WebRTC implementers debug issues with the tools of the trade.
Listen to interviews with the authors of foundational WebRTC tech! Hear the motivations and design details that pre-dated WebRTC by 20 years.
Explore the cutting edge of what people are building with WebRTC. Learn about interesting use cases and how real-world applications get designed, tested and implemented in production.
Written by developers who have written all of this from scratch. We learned it the hard way, now we want to share it with you!
This book is vendor agnostic and multiple Open Source projects and companies are involved. We would love to have you involved!
reply
I remember your username from earlier posts, IIRC also quality content about WebRTC or similar ( implementation? )
I am not a writer, but did get some extended language education, and I suggest you get rid of most exclamation marks in your texts.
It makes the reading ... boring might the wrong word ( not a native speaker ).
Good luck and many thanks for your contributions.
When talking to people I really want to emote. I am self conscious that people will think I am not interested/excited in the conversation. Through most of my life 'programming/tech' was something that I cared about. I never had any friends/family that cared though. When I became an adult and started working it felt like a re-birth of sorts :)
I just don't ever want anyone else to feel like I am not interested/excited. I will try dropping the exclamation points, and I hope that my enthusiasm still comes through.
I was determined to make a real app out of it, but everything I could think of, there were already other people doing similar stuff.
But its a nice piece of tech WebRTC, really impressed me.
here's my video chat in action: https://www.youtube.com/watch?v=YbQsQqbt70g (no audio cause I was using it to capture me speaking for the video recording)
Also I'd be remiss to not point out the OP's own pion Go libs which do similar on the server side.
I then thought about drawing on top of the video stream so you can use as like one os those games where you have to guess what the other people is drawing or, to coach someone one to one and being able to "comment" on their screen as they speak, but again, I'm pretty sure every video chats does that. So I left the idea on the drawer for now.
https://www.youtube.com/watch?v=yS3_CRr7tys (draw on the stream)
I was thinking something about Yahoo used to do: a chat room with several types of games and you and your friend could play one of those games while trash talk to each other on video
https://news.ycombinator.com/item?id=22790728
https://rootshirechess.glitch.me/ (https://glitch.com/edit/#!/rootshirechess)
Heck, maybe the Zoom ubiquity might have removed barriers for entry !
https://pion.ly/slack if people want to join! If you are interested in RTC/VoIP/P2P it’s a great channel to be in. Lots of people working on many interesting projects in it.
I got the KVS job thanks to Pion! It was fun to have a second shot and not make the same mistakes.
As an experiment in cost savings, I dove into the details and made a raw WebRTC version which worked well for a small number of users in peer to peer mode.
While I found plenty of device farms, none allowed use the device camera and mic.
How would you test a raw WebRTC video chat system short of buying a bunch of devices every generation?
I started reading and got down to "Connecting" section in the "What, Why, and How" and realized I had no idea what it was used for still. I reread the "What is WebRTC" section, and yep:
> 'The WebRTC protocol is a set of rules for two WebRTC agents to negotiate bi-directional secure real-time communication.'
Totally missed that the first time through.
So, maybe it's just me or maybe I'm just tired, but I feel like it could be called out more what it is and what it is/can be used for. Like the first line in the "Media Communication" section:
> 'WebRTC allows you to send and receive an unlimited amount of audio and video streams.'
That was helpful. And then the "Applied WebRTC" page seems helpful as well. Maybe point these out early on in the document somewhere?
Hope this helps. I've bookmarked and looking forward to reading this more (when I'm not so tired).
It is really empowering to build stuff quickly. When you hit that wall of abstraction it is so frustrating (especially when debugging).
If there are any topics/ideas you have would love to hear! I want this to be a community owned resource.
Do you plan on open-sourcing it some day?
I did a search and found that it means Real Time Communication. That was one of my guesses, but you might think if someone is trying to draw in and educate the curious, you would want to explain the very basics of the topic right off the bat.
> WebRTC, short for Web Real-Time Communication
https://webrtcforthecurious.com/docs/01-what-why-and-how/
Unfortunately the landing page is not the first chapter but an "about" page. It would make sense to me to have the landing page be the first chapter.
I found an aggregator link to the article, and first line of that section is: WebRTC is both and API and a protocol. No "short for" part.
Glad it has been added now. The rest of that paragraph has been improved too so now it gives a good quicky overview of what this is.
So I try not to put my name on things, and license liberally. My hope is that Pion and 'WebRTC for the Curious' will generate more of a community.
Probably something like the GNU Free Documentation License [1] could have been also perfectly fine. It would also prevent some shark from waiting until the text is complete and polished and then take the work of authors and contributors and sell it while passing it as their own. And that's quite a nice feature in my book (pun intended)
Whatever, I like the idea of making this the best possible resource for all things WebRTC :-)
[1]: https://en.wikipedia.org/wiki/GNU_Free_Documentation_License
I have no idea if ICE is application protocols or connection and that really would me be understand the first chapter.
Just add something like “ICE (at the same stack level as TCP/TLS/HTTP”.
ICE is used to establish connectivity over UDP, TCP, TLS or DTLS. With a preference in that order. It just keeps falling back to more expensive transports if the prior ones failed.
1. SFUs seem to be the clear winner for multi-party calls. Do they provide any advantage for 1-on-1 calls over peer'd connections? It seems like using an SFU in this case would double the number of connections, and hence double the connection issues.
2. Do clients communicate with SFUs by establishing a normal RTCPeerConnection like they would with another peer? Or is there some other video sharing protocol for SFUs that I don't know about?
2. Yup, SFU acts like another client. Some libs do one connection for up and one for down or other ways to handle stream multiplexing, but overall it's the same WebRTC peer connections.
By "doubling connection count" I mean CLIENT <-> SFU <-> CLIENT is twice as many as CLIENT <-> CLIENT.
I gave up on Chrome because it was preventing my mac from sleeping because "webRTC has active peer connections". Before de mistifying its inner workings, you may want to address why we'd want it and why it messes with power management.
First thing I noticed, on mobile this would benefit from a Next Page link.