]> git.r.bdr.sh - rbdr/junction/commitdiff
Only send offer on one side
authorRuben Beltran del Rio <redacted>
Wed, 13 Sep 2023 20:13:10 +0000 (22:13 +0200)
committerRuben Beltran del Rio <redacted>
Wed, 13 Sep 2023 20:13:10 +0000 (22:13 +0200)
extension/content_script.js
extension/peers.js
server/events.js
server/index.js

index 721176e8330e19ea21168656053634ff4457c3d2..c344bd945ca94e23ef5f954460f201cc98b6a61f 100644 (file)
@@ -50,9 +50,10 @@ const internals = {
         console.debug("disconnected from signaling server");
       });
 
         console.debug("disconnected from signaling server");
       });
 
-      socket.on("addPeer", ({ peerId }) => {
+      socket.on("addPeer", ({ peerId, shouldCreateOffer }) => {
         addPeer({
           peerId,
         addPeer({
           peerId,
+          shouldCreateOffer,
           mediaStream,
           onOffer: (data) => socket.emit("relayOffer", data),
           socket
           mediaStream,
           onOffer: (data) => socket.emit("relayOffer", data),
           socket
index f9153fd94897e6c0c579307b1393c148c524341e..be494b0ca477793f747c2c49415235b4afdc7c19 100644 (file)
@@ -13,7 +13,7 @@ const internals = {
   },
 };
 
   },
 };
 
-export function addPeer({ peerId, mediaStream, onOffer, socket }) {
+export function addPeer({ peerId, shouldCreateOffer, mediaStream, onOffer, socket }) {
   const peerConnection = new RTCPeerConnection(
     { iceServers: internals.kIceServers },
     { optional: [{ DtlsSrtpKeyAgreement: true }] },
   const peerConnection = new RTCPeerConnection(
     { iceServers: internals.kIceServers },
     { optional: [{ DtlsSrtpKeyAgreement: true }] },
@@ -42,11 +42,13 @@ export function addPeer({ peerId, mediaStream, onOffer, socket }) {
   };
 
   peerConnection.onnegotiationneeded = async () => {
   };
 
   peerConnection.onnegotiationneeded = async () => {
-    console.debug("Creating RTC offer to ", peerId);
-    const offer = await peerConnection.createOffer();
-    await peerConnection.setLocalDescription(offer);
+    if (shouldCreateOffer) {
+      console.debug("Creating RTC offer to ", peerId);
+      const offer = await peerConnection.createOffer();
+      await peerConnection.setLocalDescription(offer);
 
 
-    onOffer({ peerId, offer });
+      onOffer({ peerId, offer });
+    }
   };
 
   console.info(`There are now ${countPeers()} participants`);
   };
 
   console.info(`There are now ${countPeers()} participants`);
@@ -58,6 +60,7 @@ export function removePeer({ peerId }) {
 }
 
 export async function answerPeerOffer({ peerId, offer }) {
 }
 
 export async function answerPeerOffer({ peerId, offer }) {
+  console.info(`Answering peer ${peerId}`);
   const peerConnection = internals.peers[peerId];
 
   const remoteDescription = new RTCSessionDescription(offer);
   const peerConnection = internals.peers[peerId];
 
   const remoteDescription = new RTCSessionDescription(offer);
@@ -70,13 +73,16 @@ export async function answerPeerOffer({ peerId, offer }) {
 }
 
 export async function processPeerAnswer({ peerId, answer }) {
 }
 
 export async function processPeerAnswer({ peerId, answer }) {
+  console.info(`Processing answer for peer ${peerId}`);
   const peerConnection = internals.peers[peerId];
   const remoteDescription = new RTCSessionDescription(answer);
   await peerConnection.setRemoteDescription(remoteDescription);
 }
 
 export async function addIceCandidate({ peerId, candidate }) {
   const peerConnection = internals.peers[peerId];
   const remoteDescription = new RTCSessionDescription(answer);
   await peerConnection.setRemoteDescription(remoteDescription);
 }
 
 export async function addIceCandidate({ peerId, candidate }) {
+  console.info(`Adding ICE candidate for peer ${peerId}`);
   const peerConnection = internals.peers[peerId];
   const peerConnection = internals.peers[peerId];
+  console.info(peerConnection.signalingState);
   const iceCandidate = new RTCIceCandidate(candidate);
   await peerConnection.addIceCandidate(iceCandidate);
 }
   const iceCandidate = new RTCIceCandidate(candidate);
   await peerConnection.addIceCandidate(iceCandidate);
 }
index bad9046f2f14fff4313b1af16d797a46e9b6e7a8..18b9dd45e9c00bd4ec7da0e1c4ea8ce8fb383ba5 100644 (file)
@@ -22,9 +22,10 @@ export const types = {
   ICE_CANDIDATE_RECEIVED: "ICECandidateReceived",
 };
 
   ICE_CANDIDATE_RECEIVED: "ICECandidateReceived",
 };
 
-export function addPeer(peerId) {
+export function addPeer(peerId, shouldCreateOffer) {
   return internals.emitter.bind(null, types.ADD_PEER, {
     peerId,
   return internals.emitter.bind(null, types.ADD_PEER, {
     peerId,
+    shouldCreateOffer
   });
 }
 
   });
 }
 
index 8ac427b9a60b29a1b282305ed8bc533df306bf07..e60795f8543e470edef67051d90d25e3484876f6 100644 (file)
@@ -24,8 +24,8 @@ server.on(events.types.CONNECTION, (socket) => {
     const sockets = await server.in(room).fetchSockets();
     sockets.forEach((peer) => {
       if (peer.id !== me) {
     const sockets = await server.in(room).fetchSockets();
     sockets.forEach((peer) => {
       if (peer.id !== me) {
-        events.addPeer(me)(peer);
-        events.addPeer(peer.id)(socket);
+        events.addPeer(me, false)(peer);
+        events.addPeer(peer.id, true)(socket);
       }
     });
   });
       }
     });
   });