- Reflect es un nuevo framework para construir aplicaciones web multijugador similares a Figma, Notion y Google Sheets.
- Es una versión evolucionada de Replicache, el framework de sincronización del lado del cliente, y agrega un servidor totalmente administrado para facilitar el desarrollo de apps multijugador.
- Reflect ahora está disponible públicamente por primera vez.
- Este framework aborda el problema de la resolución de conflictos en la edición colaborativa y hace que todos los usuarios vean el mismo contenido mientras los conflictos se resuelven de forma natural.
- A diferencia de herramientas populares del ecosistema web como los CRDTs (Conflict-Free Replicated Data Types), Reflect usa la tecnología Transactional Conflict Resolution, popular en la industria de los videojuegos.
- Las ventajas y diferencias distintivas de Reflect surgen de decisiones clave en el núcleo de este motor de sincronización.
- Reflect usa funciones de JavaScript llamadas mutators para implementar cambios, y genera un mutation record cuando se invoca un mutator.
- Las mutations se aplican localmente y se transmiten al servidor, donde este las lineariza según el momento de llegada para generar el siguiente estado autoritativo.
- Reflect puede manejar aplicaciones que se mueven rápido y agregar mutations mientras espera la confirmación de las anteriores.
- Este framework requiere un almacenamiento de datos rápido capaz de rebobinar, bifurcar y crear ramas, además de un almacenamiento rápido del lado del servidor que pueda seguir el ritmo de las mutations entrantes.
- El enfoque de Reflect se generaliza bien y es adecuado para diversas tareas, como operaciones aritméticas, operaciones sobre listas y aplicación de invariantes de alto nivel.
- El servidor de Reflect es autoritativo: vuelve a calcular por su cuenta el resultado de las mutations y hace que todos los clientes vean ese resultado.
- Esta autoridad del servidor permite una autenticación detallada y la ejecución de otro código en el servidor.
- Reflect también ofrece beneficios como validación de esquemas y migraciones.
- La estrategia de sincronización de Reflect, Transactional Conflict Resolution, es simple, flexible y poderosa, por lo que es una buena opción para construir aplicaciones multijugador.
1 comentarios
Opiniones de Hacker News