Rompiendo el Código Detrás de la Colaboración en Tiempo Real con Websockets

Rate this content
Bookmark

Figma, Google Docs, Miro, y varias otras herramientas te permiten ver en tiempo real lo que una persona está haciendo, pero ¿cómo? En esta charla, conocerás el concepto de event-brokers, el patrón de diseño pubsub, y web sockets. Desentrañaremos estas características y entenderemos cómo hacerlas.

This talk has been presented at JSNation US 2024, check out the latest edition of this JavaScript Conference.

Vitor Norton
Vitor Norton
20 min
21 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Hola, soy Vitor Norton, un defensor de desarrolladores en SuperViz. Me apasiona conectar a las personas, dependo mucho de mis herramientas de productividad y me encanta la idea de trabajar en cualquier parte del mundo. Trabajar de forma remota es una prioridad, pero tampoco queremos sentirnos solos. Vamos a explorar algunos ejemplos de empresas que han abordado este problema: Gather Town, Miro, y Microsoft Teams. Los componentes colaborativos permiten la colaboración en tiempo real al sincronizar las acciones de los participantes. El componente de punteros del ratón utiliza un concepto de sala para sincronizar las posiciones del ratón. Se utilizan canales y WebSockets para la sincronización de datos en tiempo real. CR-DTS es un tipo de datos relacionado sin conflictos utilizado para manejar conflictos de contador en entornos colaborativos.

1. Introduction to Collaborative Components

Short description:

Hola, soy Vitor Norton, un defensor de desarrolladores en SuperViz. Me apasiona conectar a las personas, dependo mucho de mis herramientas de productividad y me encanta la idea de trabajar en cualquier parte del mundo. Trabajar de forma remota es una prioridad, pero tampoco queremos sentirnos solos. Vamos a explorar algunos ejemplos de empresas que han abordado este problema: Gather Town, Miro y Microsoft Teams.

Hola, estoy aquí para hablarles sobre el código detrás de los componentes colaborativos. Soy Vitor Norton. Soy brasileño. Soy 10 veces Microsoft MVP. También soy un defensor de desarrolladores aquí en SuperViz. Pero eso no dice mucho sobre mí. Prefiero decir que soy apasionado por conectar a las personas, que dependo mucho de mis herramientas de productividad, y me encanta la idea de trabajar en cualquier parte del mundo.

Así que trabajar de forma remota para mí es mi máxima prioridad. Y esto me hace estar cada vez más conectado con mis dispositivos. Y de hecho, creo que no soy solo yo. Estamos cada vez más conectados a través de nuestros dispositivos, ¿verdad? Y todos tenemos algunos objetivos. Como, no queremos más reuniones. Queremos trabajar de forma remota. Pero tampoco queremos mostrarnos solos. ¿Y cómo logramos eso? ¿Cómo resolvemos eso?

Déjame preguntar a JPT un poco para ver qué empresas han hecho esto y han resuelto este problema. Uno de los mejores ejemplos que puedo traer es Gather Town. Es una suite colaborativa en la que casi puedes jugar un juego, ¿verdad? Tienes este escritorio donde está todo tu equipo, y puedes ir al escritorio y hablar con la gente. Pero traen este modo interactivo de juego al lugar de trabajo. Y esto nos hace sentir menos solos y aún así un poco libres para llegar a otras personas que vemos que, oh, están en el escritorio, déjame hablar con ellos. Otra empresa que ha hecho esto es Miro. Que ha añadido... Estoy seguro de que has visto esto en otros productos como Figma, que puedes ver los punteros del ratón, puedes ver comentarios. Si alguien hace algo aquí, lo verás en la otra pantalla, puedes ver quién está en línea. Todos estos componentes. También tenemos aplicaciones de chat. Y seamos honestos, todos usamos mucho. También tenemos otro ejemplo es Microsoft Teams donde puedes ver qué presentaciones están usando las personas. Y si lo aceptan, si están en línea, fuera de línea, puedes ver todo de un vistazo antes de comenzar una reunión, ¿verdad? Así te sientes menos solo en esa reunión. Ves quién va a estar allí, quién ya está allí. Otro es Uber.

2. Understanding Collaborative Components

Short description:

Los componentes de colaboración colaborativa, como los elementos de formulario, los componentes de 'quién está en línea', la sincronización del puntero del ratón y los comentarios contextuales, permiten la colaboración en tiempo real. Centrémonos en el componente de punteros del ratón, que utiliza un concepto de sala para sincronizar las posiciones del ratón de los participantes. Al rastrear y actualizar posiciones con estado y un canal, se logra una sincronización fluida.

O si tienes, al menos en Brasil, tenemos esta gran aplicación que puedes ver a un repartidor trayendo cosas a tu puerta. En Uber, puedes ver el coche conduciendo y ves esta actualización en tiempo real ocurriendo. Así que todo esto es lo que llamamos componentes de colaboración colaborativa. Y desglosémoslo un poco más.

Veamos algunos ejemplos de estos componentes colaborativos. Tenemos elementos de formulario que permiten ver a dos personas en la misma página. Una persona está escribiendo en una computadora y la otra persona está viendo en la otra computadora que Anna está escribiendo. Tienes este componente de quién está en línea que te permite ver si alguien ha mirado el documento que adjuntaste en el correo electrónico o algo así. Y puedes ver para hacer el trabajo que se supone que debes hacer. También tienes el puntero del ratón, porque, y creo que esto es bastante asombroso porque al menos en mi trabajo, creo que todos son como, Oh, presiona este botón en esta posición.

Y si tienes la sincronización de punteros del ratón en este entorno, entonces puedes simplemente decir, Oh, este botón presiona este botón. Y comentarios contextuales que puedes añadir comentarios en cualquier lugar, en cualquier parte de la página y hacer este trabajo realmente sincrónico. Pero desglosémos uno de estos componentes. Desglosémos los punteros del ratón y veamos qué lo hace funcionar. Oh, hice algunas diapositivas aquí.

Bien. Así que el código detrás de esto, tenemos un componente de React, punteros del ratón, y un elemento div al que le doy un ID, y envío este ID al componente de React. Bien, veamos la definición de este componente, ¿verdad? Así que aquí está, es bastante simple, bastante directo.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Routing in React 18 brings a native app-like user experience and allows applications to transition between different environments. React Router and Next.js have different approaches to routing, with React Router using component-based routing and Next.js using file system-based routing. React server components provide the primitives to address the disadvantages of multipage applications while maintaining the same user experience. Improving navigation and routing in React involves including loading UI, pre-rendering parts of the screen, and using server components for more performant experiences. Next.js and Remix are moving towards a converging solution by combining component-based routing with file system routing.
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
Entendiendo la Arquitectura Fiber de React
React Advanced 2022React Advanced 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.

Workshops on related topic

Domina los Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Domina los Patrones de JavaScript
Top Content
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Durante esta masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debería conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final de la masterclass, los participantes ganarán una nueva confianza en su capacidad para escribir código JavaScript de alta calidad que resista el paso del tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y la comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento de la carrera y las oportunidades de avance en la industria del software
IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
React Patterns Made Simple
React Day Berlin 2024React Day Berlin 2024
62 min
React Patterns Made Simple
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Aprende patrones de React ampliamente utilizados, incluyendo HOCs, Compound Components, Provider Patterns, Functions as Child, y Portals, para escribir código más limpio y eficiente y crear aplicaciones escalables y mantenibles.Visión general En esta masterclass, los espectadores aprenderán sobre patrones clave de React que pueden hacer su código más eficiente, legible y mantenible. Presentaremos cada patrón, explicaremos cómo funciona y demostraremos ejemplos prácticos. Al final de la sesión, los participantes tendrán una comprensión sólida de cómo usar estos patrones en sus proyectos.Objetivos de aprendizajeHOCs Compound Components Provider Patterns Functions as Child Portals Modularidad Mantenibilidad Aplicación en el mundo real.
Masterclass de alto rendimiento Next.js
React Summit 2022React Summit 2022
50 min
Masterclass de alto rendimiento Next.js
Workshop
Michele Riva
Michele Riva
Next.js es un marco convincente que facilita muchas tareas al proporcionar muchas soluciones listas para usar. Pero tan pronto como nuestra aplicación necesita escalar, es esencial mantener un alto rendimiento sin comprometer el mantenimiento y los costos del servidor. En este masterclass, veremos cómo analizar el rendimiento de Next.js, el uso de recursos, cómo escalarlo y cómo tomar las decisiones correctas al escribir la arquitectura de la aplicación.
Mejores Prácticas y Patrones para Administrar Solicitudes de API y Estados
React Advanced 2022React Advanced 2022
206 min
Mejores Prácticas y Patrones para Administrar Solicitudes de API y Estados
Workshop
Thomas Findlay
Thomas Findlay
Con el surgimiento de frameworks, como React, Vue o Angular, la forma en que se construyen los sitios web ha cambiado a lo largo de los años. Las aplicaciones modernas pueden ser muy dinámicas y realizar múltiples solicitudes de API para poblar un sitio web con contenido actualizado o enviar nuevos datos a un servidor. Sin embargo, este cambio de paradigma ha introducido nuevos problemas con los que los desarrolladores deben lidiar. Cuando una solicitud de API está pendiente, tiene éxito o falla, el usuario debe recibir una retroalimentación significativa. Otros problemas pueden incluir el almacenamiento en caché de datos de API o la sincronización del estado del cliente con el servidor. Todos estos problemas requieren soluciones que deben ser codificadas, pero pueden volverse rápidamente inmanejables y dar como resultado una base de código difícil de ampliar y mantener. En este masterclass, cubriremos cómo manejar las solicitudes de API, los estados de API y la cancelación de solicitudes mediante la implementación de una Capa de API y combinándola con React-Query.
Prerrequisitos: Para aprovechar al máximo este masterclass, debes estar familiarizado con React y Hooks, como useState, useEffect, etc. Si deseas codificar junto con nosotros, asegúrate de tener Git, un editor de código, Node y npm instalados en tu máquina.