https://www.daily.co/
As you noted below, the signaling itself is the easy part. The long tail of RTCPeerConnection-related corner cases, bandwidth management, analytics and debugging real-world user experience, scaling usage both horizontally and geographically, building features like recording, scaling meeting size beyond 4 participants, optimizing for specific use cases, dealing with browser/platform quirks ... we've tried to make life easy/(ier) for developers in all of those areas.I know well about the mess of difficult to debug technologies that form WebRTC... and on top of that you'll want monitoring, recording, reconnection logic when things go wrong. Of course, add the ability to seamlessly scale when there are lots of users joining a call. The list goes on and on even for a seemingly simple service that "just works"!!
I've been maintaining and improving the oss Kurento server for several years now (https://www.kurento.org/), and the kind of issues that users find is crazy. A slight misconfig in an intermediate proxy can cause random issues very hard to track down.
Shameless plug: We're now building OpenVidu (https://openvidu.io/) on top of Kurento, to provide some of these features. This is a tool that in turn (pun intended) eases writing videoconference services. Most people looking into starting their own WebRTC app from scratch with Kurento, would be better served by OpenVidu!
* Signaling wasn't a big money maker. You are just exchanging small blobs.
* We spent a lot of time helping people debug their networks/explaining WebRTC and making SDKs. I enjoyed the work, but didn't feel like it scaled well.
* Adding features caused major paralysis. Everyone wanted different authentication or different signaling patterns etc...
I'm happy to talk to you, too. I do a lot of "let's just talk about real-world things you'll encountering building video features" calls. You don't need to be a Daily (my startup) customer or even plan to be one. I'm kwindla at daily dot co.
They all seem really simple, until you actually sit down to do it yourself. Mad props to the FaceTime crew...nobody else has mastered seamless RTC the way they have.
I’m curious, did you implement the perfect negotiation logic from the webrtc spec? I’m working on my own WebRTC applications and was hoping that would at least solve the glaring problem in practice