diff --git a/client/app/composables/use-mediasoup.ts b/client/app/composables/use-mediasoup.ts index 2893d43..35f1cee 100644 --- a/client/app/composables/use-mediasoup.ts +++ b/client/app/composables/use-mediasoup.ts @@ -4,29 +4,16 @@ import * as mediasoupClient from 'mediasoup-client' import { io } from 'socket.io-client' const ICE_SERVERS: RTCIceServer[] = [ - // { - // urls: 'stun:stun.relay.metered.ca:80', - // }, - // { - // urls: 'turn:global.relay.metered.ca:80', - // username: '4cad09c0111f423f5283814c', - // credential: 'B1dO8AGehex4o3pt', - // }, - // { - // urls: 'turn:global.relay.metered.ca:80?transport=tcp', - // username: '4cad09c0111f423f5283814c', - // credential: 'B1dO8AGehex4o3pt', - // }, - // { - // urls: 'turn:global.relay.metered.ca:443', - // username: '4cad09c0111f423f5283814c', - // credential: 'B1dO8AGehex4o3pt', - // }, - { - urls: 'turns:global.relay.metered.ca:443?transport=tcp', - username: '4cad09c0111f423f5283814c', - credential: 'B1dO8AGehex4o3pt', - }, + { urls: 'stun:stun.l.google.com:19302' }, + { urls: 'stun:stun.l.google.com:5349' }, + { urls: 'stun:stun1.l.google.com:3478' }, + { urls: 'stun:stun1.l.google.com:5349' }, + { urls: 'stun:stun2.l.google.com:19302' }, + { urls: 'stun:stun2.l.google.com:5349' }, + { urls: 'stun:stun3.l.google.com:3478' }, + { urls: 'stun:stun3.l.google.com:5349' }, + { urls: 'stun:stun4.l.google.com:19302' }, + { urls: 'stun:stun4.l.google.com:5349' }, ] export const useMediasoup = createGlobalState(() => { @@ -42,7 +29,17 @@ export const useMediasoup = createGlobalState(() => { let sendTransport: mediasoupClient.types.Transport let recvTransport: mediasoupClient.types.Transport + socket.on('producers', async (producers) => { + for (const producer of producers) { + await consume(producer.producerId) + } + }) + socket.on('newProducer', async ({ producerId }) => { + await consume(producerId) + }) + + async function consume(producerId: number) { const params = await socket.emitWithAck('consume', { producerId, transportId: recvTransport.id, @@ -59,7 +56,7 @@ export const useMediasoup = createGlobalState(() => { streams.value.push(stream) triggerRef(streams) - }) + } async function loadDevice() { device = new mediasoupClient.Device() diff --git a/server/index.mjs b/server/index.mjs index da78488..2d68606 100644 --- a/server/index.mjs +++ b/server/index.mjs @@ -48,6 +48,13 @@ createWorker(); io.on("connection", (socket) => { console.log("Client connected:", socket.id); + socket.emit('producers', producers.values().map(producer => { + return { + producerId: producer.id, + kind: producer.kind, + } + })) + socket.on("getRtpCapabilities", (cb) => { cb(router.rtpCapabilities); }); @@ -103,7 +110,7 @@ io.on("connection", (socket) => { producers.set(socket.id, [...(producers.get(socket.id) || []), producer]); cb({ id: producer.id }); - socket.broadcast.emit("newProducer", { producerId: producer.id }); + socket.broadcast.emit("newProducer", { producerId: producer.id, kind: producer.kind }); producer.observer.on("close", () => { console.log("producer closed", producer.id);