]> git.r.bdr.sh - rbdr/junction/commitdiff
Update for socket.io 4
authorRuben Beltran del Rio <redacted>
Mon, 28 Aug 2023 20:09:55 +0000 (22:09 +0200)
committerRuben Beltran del Rio <redacted>
Mon, 28 Aug 2023 20:09:55 +0000 (22:09 +0200)
Makefile
extension/content_script.js
server/index.js

index d65039bc5fd30984f4985ad0dbaad2b862f99945..d4c4f4d2a7138c1f5d92e2bc6ec1c13483daf321 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -7,3 +7,6 @@ start:
 
 docker-build:
        docker-compose build
+
+package:
+       cd extension && zip -r ../junction.xpi manifest.json junction.js build/content_script.js icons/ sounds/
index 279c52de5adad64e34da41a00eb78d05d235c7d8..6785a6556427ab48b49495eda7f51fc907717465 100644 (file)
@@ -4,11 +4,14 @@ import Media from './media';
 
 const internals = {
 
-  kSocketUrl: 'ws://localhost:8000',
+  kSocketUrl: 'https://junction.tranquil.services',
+       kIceServers: [
+               {url:"stun:stun.l.google.com:19302"}
+       ],
 
   port: null,
   socket: null,
-  peers: 0,
+  peers: {},
 
   onMessage(message) {
     internals[message.action](message.data);
@@ -19,7 +22,7 @@ const internals = {
     internals.tada = data.tada; // Keeping for fun
 
     try {
-      await Media.start();
+      const mediaStream = await Media.start();
 
       internals.socket = io(internals.kSocketUrl, {
         transports: ['websocket']
@@ -51,7 +54,52 @@ const internals = {
       internals.socket.on('addPeer', function(data) {
 
         console.log(data);
-        Peers.add('id-'+Peers.count(), internals.tada);
+        Peers.add(data.peer_id, internals.tada);
+          const peerId = data.peer_id;
+
+          const peerConn = new RTCPeerConnection(
+              {"iceServers": internals.kIceServers},
+              {"optional": [{"DtlsSrtpKeyAgreement": true}]}
+          );
+
+          internals.peers[peerId] = peerConn;
+
+          peerConn.onicecandidate = (event) => {
+            if (event.candidate) {
+              internals.socket.emit('relayICECandidate', {
+                'peer_id': peerId,
+                'ice_candidate': {
+                  'sdpMLineIndex': event.candidate.sdpMLineIndex,
+                  'candidate': event.candidate.candidate
+                }
+              });
+            }
+          }
+
+          peerConn.onaddstream = (stream) => {
+            console.log(`Received stream for peer ${peerId}`);
+            console.log(stream);
+          }
+
+          peerConn.addStream(mediaStream);
+
+          if (data.should_create_offer) {
+            console.log("Creating RTC offer to ", peerId);
+            peerConn.createOffer((local_description) => {
+                  console.log("Local offer description is: ", local_description);
+                  peerConn.setLocalDescription(local_description, () => {
+                        internals.socket.emit('relaySessionDescription', {
+                          'peer_id': peerId,
+                          'session_description': local_description
+                        });
+
+                        console.log("Offer setLocalDescription succeeded");
+                      }, () => { console.log("Offer setLocalDescription failed!"); }
+                  );
+                },
+                (error) => { console.log("Error sending offer: ", error) }
+            );
+          }
         console.log(`There are now ${Peers.count()} participants`);
       });
 
index 56a1df48e84b4411ea51b4ea49c9511bee93286a..37104e1d717ed0bacd028412c7fc98b077bd6039 100644 (file)
@@ -15,7 +15,7 @@ server.on('connection', (socket) => {
 
     socket.on('join', (data) => {
         socket.join(data.url);
-        const sockets = server.sockets.adapter.rooms.get(data.url);
+        const sockets = server.of(data.url).sockets.keys();
         sockets.forEach((peerId) => {
             if (peerId !== me) {
                 const peer = server.sockets.sockets.get(peerId)
@@ -34,7 +34,7 @@ server.on('connection', (socket) => {
     });
 
     socket.on('relayICECandidate', (data) => {
-        const sockets = server.sockets.adapter.rooms.get(data.url);
+        const sockets = server.of(data.url).sockets.keys();
         sockets.forEach((peerId) => {
             const peer = server.sockets.sockets.get(peerId)
             peer.emit(events.types.ICE_CANDIDATE_RECEIVED, events.ICECandidateReceived(me, data.ice_candidate))
@@ -44,7 +44,7 @@ server.on('connection', (socket) => {
     });
 
     socket.on('relaySessionDescription', (data) => {
-        const sockets = server.sockets.adapter.rooms.get(data.url);
+        const sockets = server.of(data.url).sockets.keys();
         sockets.forEach((peerId) => {
             const peer = server.sockets.sockets.get(peerId)
             peer.emit(events.types.SESSION_DESCRIPTION_RECEIVED, events.SessionDescriptionReceived(me, data.session_description))