aboutsummaryrefslogtreecommitdiff
path: root/extension/content_script.js
diff options
context:
space:
mode:
authorRuben Beltran del Rio <ruben@unlimited.pizza>2023-08-28 22:09:55 +0200
committerRuben Beltran del Rio <ruben@unlimited.pizza>2023-08-28 22:09:55 +0200
commit139f43c6caf963d66704fe1675bcc70735e21926 (patch)
treee866e912e59e740d649ea3b565fbf218596f4c89 /extension/content_script.js
parent90de3cbb942653f472bc663fc11749117b1f8873 (diff)
Update for socket.io 4
Diffstat (limited to 'extension/content_script.js')
-rw-r--r--extension/content_script.js56
1 files changed, 52 insertions, 4 deletions
diff --git a/extension/content_script.js b/extension/content_script.js
index 279c52d..6785a65 100644
--- a/extension/content_script.js
+++ b/extension/content_script.js
@@ -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`);
});