Videoconferencia WebRTC (muchos a muchos)

Estoy a punto de construir un sistema de videoconferencia usando webRTC + socket.io + node.js, así que he leído este libro como punto de inicio “Comunicaciones en tiempo real con webRTC” por Simon Pietro Romano, ya terminé de leerlo, voy a correr este sistema a través de una red local de 100 Mbps, así que voy a usar la topología de la red de malla, ya que el ancho de banda no es un problema, no quiero centrarme en esto, solo tengo una pregunta simple sobre cómo trabajar con muchos usuarios, específicamente sobre el uso de estas funciones:

var pc // PeerConnection Object pc.onaddstream = ...//for receiving stream from remote party pc.setRemoteDescription()...//for setting .sdp file from remote party 

Sé que tengo que establecer una conexión de igual a igual en cada igual, pero supongamos que tengo 3 usuarios: A, B y C.

A va a ser el iniciador de la habitación, luego B se une a la sala, aquí A envía una oferta a B y recibe una respuesta de B, A setRemoteDescription (answerB) y B setRemoteDescription (offerA), pero cuando C se une a la sala, A y B serán sus iniciadores, de modo que ambos enviarán ofertas a C, y C les enviará respuestas, aquí está mi confusión:

Cuando C recibe por primera vez la oferta de A, esto es C setRemoteDescription (offerA), pero al recibir la oferta de B, esta es C setRemoteDescription (offerB), estoy estableciendo un nuevo valor aquí y perdiendo la oferta anterior de A, este procedimiento es justo ¿Temporal? ¿C no va a necesitar más la oferta A? Sé que este archivo SDP solo contiene información de medios del navegador web. Tengo la misma duda con onaddstream, ¿este procedimiento captura automáticamente la transmisión de un igual y luego de otra? ¿Una primera captura la secuencia de B y la segunda de C cuando esta última se unió a la sala ?, ¿A pierde la transmisión de B cuando captura la de C? ?.

Por otro lado, addIceCandidate solo agrega candidatos remotos a cada par, por lo que un par local tiene las rutas de los compañeros remotos, nunca pierde las rutas de los compañeros remotos, creo, ¿Tengo razón?

He encontrado el código fuente de la videoconferencia webRTC y he visto que onaddstream y setRemoteDescription son como funciones temporales, una vez que se establece la conexión entre pares, ya no son necesarias, no sé, tal vez me equivoque.

Gracias por adelantado.

Cuando C recibe por primera vez la oferta de A, esto es C setRemoteDescription (offerA), pero al recibir la oferta de B, esta es C setRemoteDescription (offerB), estoy estableciendo un nuevo valor aquí y perdiendo la oferta anterior de A, este procedimiento es justo ¿Temporal ?, ¿no va a necesitar C la oferta A?

Necesitará tener una conexión de igual a igual ( pc ) en su lado del cliente por cada otro participante, hará algo similar a:

 socket.on('offer', function(from, data) { users[from].pc.setRemoteDescription(new RTCSessionDescription(data)); // create answer.. }); 

Tenga en cuenta que el servidor Node está enviando la oferta junto con el ID del usuario que lo está enviando. Además, los users contendrán una entrada por participante de sala con una referencia a su pc . Usted agregará la descripción remota para cada participante a su propia pc .

Hay muchos ejemplos en internet, el mío está en http://github.com/jconde/euphony 🙂