Después de buscar implementar WebRTC con un modelo de cliente a servidor (como Discord), llegué a la conclusión de que la forma de hacerlo es tener 2 clientes: el servidor y el cliente. Los flujos de audio se pueden superponer y enviar de vuelta al usuario en 1 solo flujo.
backend/servidor.js
const clientPeer = new Peer({ initiator: true, wrtc }); clientPeer.on('connect', () => console.log('hi client, this is server')); clientPeer.on('data', (data) => console.log('got a message from client peer: ', data));interfaz/index.js
serverPeer.on('connect', () => console.log('Connected to server')); serverPeer.on('stream', async (stream) => { const video = document.createElement('audio'); ('srcObject' in video) ? video.srcObject = stream : video.src = window.URL.createObjectURL(stream); await video.play(); });¿Cómo implementaría el envío de flujos de medios entre el cliente y el servidor?
Una posible solución puede ser: crear un objeto MediaRecorder , que puede grabar los flujos de medios en el lado del cliente. Este objeto emite fragmentos de datos a lo largo del tiempo. Puede enviar estos fragmentos a través de WebSocket al servidor. En el lado del servidor, puede hacer lo que quiera con los fragmentos de datos. Para obtener más detalles, puede consultar este https://mux.com/blog/the-state-of-going-live-from-a-browser/ .
https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder Otra solución puede ser: Convertir una aplicación node.js en PEER con WebRTC