Open 2 browsers and paste this code to the console
const peerConnection = new RTCPeerConnection();
peerConnection.onicecandidate = (e) => {
console.log("Peer A onicecandidate", peerConnection.localDescription);
};
const channel = peerConnection.createDataChannel("channel-name");
channel.onmessage = (e) => console.log("Peer A - Got message", e.data);
channel.onopen = (e) => console.log("Peer A - Channel opened!");
channel.onclose = (e) => console.log("Peer A - Channel closed!");
const peerConnection = new RTCPeerConnection();
peerConnection.onicecandidate = (e) => {
console.log("Peer B onicecandidate", peerConnection.localDescription);
};
let channel;
peerConnection.ondatachannel = ({channel: remoteChannel}) => {
remoteChannel.onmessage = (e) => console.log("Peer B - Got message", e.data);
remoteChannel.onopen = (e) => console.log("Peer B - Channel opened!");
remoteChannel.onclose = (e) => console.log("Peer B - Channel closed!");
channel = remoteChannel;
};
peerConnection
.createOffer()
.then((o) => peerConnection.setLocalDescription(o));
const offer = // copy from A
peerConnection.setRemoteDescription(offer).then((a) => console.log("Peer B - Done setRemoteDescription"));
peerConnection
.createAnswer()
.then((a) => peerConnection.setLocalDescription(a))
.then((a) => console.log(JSON.stringify(peerConnection.localDescription)));
const answer = // copy from B
peerConnection.setRemoteDescription(answer).then(a=>console.log("Peer A - Done setRemoteDescription"))
channel.send('text')