I recently implemented a WebRTC multiplayer game in Godot, and yeah, it has very little to do with chat, and isn't really "off the shelf", it took a hell of a lot of configuration, plus running and maintaining a STUN/TURN server and backend lobby/matchmaking system. It's no more a chat protocol than HTTP really when you're doing that kind of programming with it, just has some nifty tricks for getting around routers and making a direct connection where it can.
That said, it was better than NAT punch-through and/or UPNP which are not very reliable these days.
Correct me if I'm wrong. STUN/TURN is the one that is doing the UDP punching. And in the event that fails, all the data are being passed through the STUN/TURN server, which makes it just like client/server setup where the server became the bottle neck again.
Stun is a protocol to query the network about the topology. Turn is a protocol to route through a third party when p2p fails. Both of these are part of the ICE methodologies.
STUN is basically a way to know your external IP address to share to others and have both peers try to connect to one another through them. It's lightweight.
If that fails, then there's TURN which acts like a proxy between the peers.
That said, it was better than NAT punch-through and/or UPNP which are not very reliable these days.