En primer lugar: mi conocimiento del tiempo de los eventos en javascript es deficiente, así que acepte mis disculpas si lo que estoy preguntando parece obvio (y disculpe si lo estoy bombardeando con preguntas).
Cuando un par A maneja la conexión de otro par B a través DataConnection.on('connection', function() {...})
¿está lista esa conexión dentro del controlador o está completamente disponible después de que el controlador de eventos regresa? Quiero decir: ¿puede A enviar un mensaje de datos a B como en este código?
peerA.on('connection', function(c) {
// do something
c.send("Welcome! (will this message ever got delivered?)");
// do something else
});
En caso de que esto no sea posible, ¿no sería bueno tener un evento 'después de la conexión' para manejar estos casos? ¿O tal vez se espera que funcione el siguiente código?
peerA.on('connection', function(c) {
// do something
setTimeout(function() {
c.send("Welcome! (will this message ever got delivered?)");
}, 0);
});
Gracias.
Está listo para ser utilizado en el manipulador. No encuentro muy útil un evento de "comenzar a conectarse". ¿En qué caso te parece útil?
En el proyecto que estoy desarrollando, un problema es evitar conexiones no deseadas.
Hay tres roles: estudiante, orador, profesor (he agregado un indicador de metadatos que indica el rol en la matriz de opciones al registrar al compañero). El profesor se conecta al servidor con su DNI, que es conocido, y espera al ponente y al alumno. Una vez que estén todos conectados, se deben evitar más conexiones.
El rechazo que ha implementado en v2.0.0 debería funcionar, pero me parece que los cambios en la API son bastante radicales.
Sí, la nueva versión es importante (rompiendo, sin compatibilidad con versiones anteriores). La antigua API es bastante confusa y el código tiene muchos trucos heredados de sus primeros días en 2013, es muy difícil de mantener.
Pero como es un cambio de última hora, seguiré soportando la versión anterior, por lo que implementaré alguna forma de rechazo en la v1. De todos modos, le recomiendo que cambie a v2 si no necesita admitir navegadores muy antiguos. Ganarás en estabilidad y no necesitarás alojar un PeerServer.
El rechazo en v2 aún no está hecho, pero me estoy enfocando en el desarrollo de v2, por lo que esa función estará lista pronto.
He echado un vistazo al ejemplo que proporcionó para v2 y realmente se ve impresionante: ¡un simple chat uno a uno en unas pocas líneas de código! Además, modifiqué un poco ese código y vi que onRemoteStream se activa en cada compañero cada vez que alguien se une a la sala, lo que hace posible manejar toda la conexión de medios que puede admitir su ancho de banda: ¡wow!
Solo algunas preguntas:
PD He visto que ha actualizado la planificación de la hoja de ruta para agregar un número máximo de pares por sala y eso es algo que realmente necesito.
¡Sí! Acabo de agregar esa característica al plan, debería ser muy fácil de implementar
Ya tiene acceso a las transmisiones en los controladores. No está bien documentado, pero como dijo, recibe una transmisión remota por par y su propia transmisión remota una vez, que se reutiliza para todas las conexiones en este momento, que puede cambiarse en el futuro si es necesario.
¿Quiere decir procesar los flujos antes de enviarlos? si es así, también se puede implementar.
Sí, recibe los canales de datos sin procesar, uno por par conectado. También funcionará bien con la función de metadatos mencionada anteriormente.
PeerJS necesita un canal para hacer la señalización inicial. Pero ahora, en lugar de usar un PeerServer, toda la lógica está hecha por la propia biblioteca PeerJS, y solo necesita un intermediario MQTT. Por lo tanto, aún necesita un servidor, pero MQTT es un protocolo estándar, por lo que solo necesita configurar un intermediario, además, no necesita una base de datos ni se guarda nada en la memoria del servidor (como en v1), por lo que es completamente escalable.
¡Una gran noticia! Creo que definitivamente cambiaré de v1 a v2. Hará que todo sea mucho más fácil. ¡Muchas gracias!
Gracias por la biblioteca increíble
Comentario más útil
¡Sí! Acabo de agregar esa característica al plan, debería ser muy fácil de implementar
Ya tiene acceso a las transmisiones en los controladores. No está bien documentado, pero como dijo, recibe una transmisión remota por par y su propia transmisión remota una vez, que se reutiliza para todas las conexiones en este momento, que puede cambiarse en el futuro si es necesario.
¿Quiere decir procesar los flujos antes de enviarlos? si es así, también se puede implementar.
Sí, recibe los canales de datos sin procesar, uno por par conectado. También funcionará bien con la función de metadatos mencionada anteriormente.
PeerJS necesita un canal para hacer la señalización inicial. Pero ahora, en lugar de usar un PeerServer, toda la lógica está hecha por la propia biblioteca PeerJS, y solo necesita un intermediario MQTT. Por lo tanto, aún necesita un servidor, pero MQTT es un protocolo estándar, por lo que solo necesita configurar un intermediario, además, no necesita una base de datos ni se guarda nada en la memoria del servidor (como en v1), por lo que es completamente escalable.