- Una librería que permite implementar webapps multijugador interconectadas entre sí sin servidor con solo unas cuantas líneas de código
- Basada en WebRTC del navegador, usa redes públicas como canal de intercambio de señales (signaling) para automatizar el emparejamiento P2P y la comunicación
- Permite realizar descubrimiento de pares sin servidor eligiendo entre BitTorrent, Nostr, MQTT, IPFS, Supabase, Firebase
- Después del signaling, los datos de la app se transmiten directamente por P2P con cifrado E2E, sin pasar por un medio intermedio
- Ofrece abstracciones de alto nivel como Rooms/broadcasting, serialización automática, chunking/throttling de datos grandes, eventos de progreso, cifrado de datos de sesión y metadatos de streams
- Funciona no solo en el navegador, sino también en Node/Deno/Bun, y soporta funciones prácticas como configuración de servidores TURN, hooks de React y ejecución del lado del servidor
- Su enfoque de aprovechar infraestructura pública sin configuración lo hace ideal para distintos experimentos y prototipado
8 comentarios
¿El servidor TURN te lo proveen los ancestros?
Parece que
'stun:stun.cloudflare.com:3478'está incrustado en el código fuente.No
stun, sinoturn.stunsolo sirve, en términos simples, para decir quién eres segúnstun, así que hay algunos servidores públicos,pero
turntiene que retransmitir el tráfico (o sea, es caro), así que hay que pagar por usarlo o montarlo por cuenta propia.Ej.) https://github.com/coturn/coturn
Es algo de este estilo.
Es cierto que en muchos casos se puede comunicar solo con
stun, pero decir simplemente que “funciona” es...funcionar, funciona... pero mmm... esa es la sensación.
Si es emparejamiento P2P, ¿no haría falta TURN?
Creo que depende de a qué te refieras con “emparejamiento p2p” en WebRTC.
Si es el caso 1, como dices, no hace falta TURN.
Incluso en el caso 2, si la situación es favorable y la comunicación UDP entre ambos tuvo éxito, no hace falta TURN.
En el caso 2, si falla la comunicación de paquetes por UDP entre ambos, ahí sí hace falta TURN.
Las causas del fallo pueden ser:
En esos casos hay que usar TURN.
(Recién me entero, al revisar este recuerdo, de que IPv4 only <-> IPv6 only no funciona.)
Sí, o sea, la opción 2. Dijeron "interoperar entre sí sin servidor" y "biblioteca", pero quizá están esperando demasiado...
¿A qué parte te refieres exactamente?
-> Entonces parece que lo que yo sabía ya está desactualizado. ¡Te agradecería si me pudieras contar qué cambió desde la información que yo conocía (y compartí)!
-> Lo que dijo skageektp es correcto. Como es una librería, se puede dejar pasar hasta cierto punto. Yo fui demasiado sensible.
Yo
3. Para usarlo bien, STUN por sí solo no basta y hace falta TURN, así que es una exageración decirlo así~
era lo que quería expresar.
Respecto a las explicaciones de los puntos 1 y 2:
Lo corregiré así. En la publicación original puede prestarse a malentendidos.