वेब RTC को ब्राउज़रों के बीच पीयर-टू-पीयर संचार की आवश्यकता होती है। इस तंत्र को सिग्नलिंग, नेटवर्क सूचना, सत्र नियंत्रण और मीडिया सूचना की आवश्यकता थी। वेब डेवलपर एसआईपी या एक्सएमपीपी या किन्हीं दोतरफा संचार जैसे ब्राउज़रों के बीच संचार के लिए विभिन्न तंत्र चुन सकते हैं। createSignalingChannel() का एक उदाहरण:
var signalingChannel = createSignalingChannel(); var pc; var configuration = ...; // run start(true) to initiate a call function start(isCaller) { pc = new RTCPeerConnection(configuration); // send any ice candidates to the other peer pc.onicecandidate = function (evt) { signalingChannel.send(JSON.stringify({ "candidate": evt.candidate })); }; // once remote stream arrives, show it in the remote video element pc.onaddstream = function (evt) { remoteView.src = URL.createObjectURL(evt.stream); }; // get the local stream, show it in the local video element and send it navigator.getUserMedia({ "audio": true, "video": true }, function (stream) { selfView.src = URL.createObjectURL(stream); pc.addStream(stream); if (isCaller) pc.createOffer(gotDescription); else pc.createAnswer(pc.remoteDescription, gotDescription); function gotDescription(desc) { pc.setLocalDescription(desc); signalingChannel.send(JSON.stringify({ "sdp": desc })); } }); } signalingChannel.onmessage = function (evt) { if (!pc) start(false); var signal = JSON.parse(evt.data); if (signal.sdp) pc.setRemoteDescription(new RTCSessionDescription(signal.sdp)); else pc.addIceCandidate(new RTCIceCandidate(signal.candidate)); };