Signal, WhatsApp, and Telegram all rely on WebRTC (Web Real-Time Communication) for their real-time voice and video calls. In a one-to-one call, the connection process can be divided into three stages:
Signaling exchange
Each endpoint uses the app’s signaling server to exchange SDP (Session Description Protocol) messages and ICE (Interactive Connectivity Establishment) candidates—IP address, port, encryption parameters, and so on.
NAT traversal attempt — STUN → direct connection
The client leverages a STUN (Session Traversal Utilities for NAT) server to discover its public-facing address and then starts ICE connectivity checks. In typical home or mobile networks, about 75 % – 80 % of calls succeed in establishing a P2P (peer-to-peer) connection, with media flowing directly between the two devices over SRTP (Secure Real-time Transport Protocol) and no relay involved.
Fallback relay — TURN
If NAT (Network Address Translation) types such as symmetric NAT, CGNAT (Carrier-Grade NAT), a corporate firewall, or a VPN (Virtual Private Network) blocks direct connectivity, ICE automatically abandons P2P and switches to TURN (Traversal Using Relays around NAT) to relay the media. This happens in roughly 20 % of cases, but TURN ensures the call can still be established under the worst network conditions—at the cost of higher bandwidth usage and added latency.
Login to reply
Replies (7)
Focusing only on Keet’s one-to-one real-time calling, its goal is likewise to establish a P2P direct connection first. The process resembles WebRTC’s three stages, but it replaces STUN with a DHT. I’m not yet sure how its fallback relay is implemented.
Thank you 🙏
Keep us posted brother. I’d love to hear more about what yall are doing.
Take my Bitcoin and tell me more. Please let me know how I can help market this and share what you are building with the world. @Keychat
Thanks🫡. Just testing with Keychat is enough.
Why not just run HiveTalk in a KeyChat browser?
Absolutely. The voice and video chat contexts in HiveTalk and Chat can differ — they can be considered distinct features.