]>
Commit | Line | Data |
---|---|---|
b9a2baf2 | 1 | import { io } from "socket.io-client"; |
06b7617a RBR |
2 | import { initializeTada } from "./tada"; |
3 | import { | |
4 | addPeer, | |
5 | addIceCandidate, | |
6 | answerPeerOffer, | |
7 | processPeerAnswer, | |
8 | removePeer, | |
9 | resetPeers, | |
10 | } from "./peers"; | |
11 | import { startMedia, stopMedia } from "./media"; | |
d9e5fa1a | 12 | |
80172072 | 13 | const internals = { |
b9a2baf2 RBR |
14 | kSocketUrl: "https://junction.tranquil.services", |
15 | kIceServers: [{ urls: "stun:stun.l.google.com:19302" }], | |
d4fb48eb | 16 | |
80172072 RBR |
17 | port: null, |
18 | socket: null, | |
d4fb48eb | 19 | |
80172072 RBR |
20 | onMessage(message) { |
21 | internals[message.action](message.data); | |
22 | }, | |
d4fb48eb | 23 | |
06b7617a RBR |
24 | onError(error) { |
25 | // TODO: How do we want to handle errors? | |
26 | console.error(error.stack || error); | |
27 | }, | |
28 | ||
b9a2baf2 | 29 | async joinAudioCall({ currentUrl, tada }) { |
80172072 | 30 | try { |
06b7617a RBR |
31 | const mediaStream = await startMedia(); |
32 | const playTada = initializeTada(tada); | |
4757c461 | 33 | |
06b7617a | 34 | const socket = (internals.socket = io(internals.kSocketUrl, { |
b9a2baf2 | 35 | transports: ["websocket"], |
06b7617a | 36 | })); |
d9e5fa1a | 37 | |
06b7617a RBR |
38 | socket.on("error", internals.handleError); |
39 | socket.on("connect_error", internals.handleError); | |
02071d8e | 40 | |
06b7617a RBR |
41 | socket.on("connect", () => { |
42 | console.debug("Connected to signaling server, group: ", currentUrl); | |
43 | playTada(); | |
44 | socket.emit("join", { | |
b9a2baf2 | 45 | room: currentUrl, |
02071d8e | 46 | }); |
80172072 | 47 | }); |
d4fb48eb | 48 | |
06b7617a RBR |
49 | socket.on("disconnect", () => { |
50 | console.debug("disconnected from signaling server"); | |
80172072 | 51 | }); |
d4fb48eb | 52 | |
06b7617a RBR |
53 | socket.on("addPeer", ({ peerId }) => { |
54 | addPeer({ | |
55 | peerId, | |
56 | mediaStream, | |
57 | onOffer: (data) => socket.emit("relayOffer", data), | |
58 | socket | |
b9a2baf2 | 59 | }); |
06b7617a | 60 | playTada(); |
80172072 | 61 | }); |
d4fb48eb | 62 | |
06b7617a RBR |
63 | socket.on("offerReceived", async ({ peerId, offer }) => { |
64 | socket.emit("relayAnswer", await answerPeerOffer({ peerId, offer })); | |
284fc661 RBR |
65 | }); |
66 | ||
06b7617a RBR |
67 | socket.on("answerReceived", (data) => processPeerAnswer(data)); |
68 | socket.on("ICECandidateReceived", (data) => addIceCandidate(data)); | |
69 | socket.on("removePeer", (data) => removePeer(data)); | |
b9a2baf2 | 70 | } catch (err) { |
80172072 | 71 | internals.port.postMessage({ |
b9a2baf2 | 72 | action: "error", |
80172072 RBR |
73 | }); |
74 | internals.port.disconnect(); | |
75 | } | |
76 | }, | |
4757c461 | 77 | |
80172072 | 78 | hangUp() { |
06b7617a RBR |
79 | resetPeers(); |
80 | stopMedia(); | |
80172072 RBR |
81 | internals.socket.close(); |
82 | internals.port.disconnect(); | |
b9a2baf2 | 83 | }, |
80172072 | 84 | }; |
d9e5fa1a | 85 | |
b9a2baf2 | 86 | internals.port = chrome.runtime.connect({ name: "content" }); |
80172072 | 87 | internals.port.onMessage.addListener(internals.onMessage); |
4757c461 | 88 | |
06b7617a | 89 | console.debug("Content Script Loaded"); |
4757c461 RBR |
90 | |
91 | // Indicates to the background script that we executed correctly | |
92 | true; |