Web RTC ต้องการการสื่อสารแบบเพียร์ทูเพียร์ระหว่างเบราว์เซอร์ กลไกนี้จำเป็นต้องมีการส่งสัญญาณ ข้อมูลเครือข่าย การควบคุมเซสชัน และข้อมูลสื่อ นักพัฒนาเว็บสามารถเลือกกลไกที่แตกต่างกันในการสื่อสารระหว่างเบราว์เซอร์ เช่น SIP หรือ XMPP หรือการสื่อสารสองทาง ตัวอย่างของ 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)); };