He creado una aplicación de mensajería instantánea toda en @Cloudflare. Tardó 1 día, 3 archivos, 4 recursos... Y está listo para escalar de 0 a millones. Autenticación y enrutamiento de → de trabajadores Base de datos D1 → almacenar usuario/pase Usuario DO → perfil de usuario y amigos Mensajes de conversación DO → Escribe en el blog en respuesta, pero aquí un pequeño adelanto: Cloudflare/Actors Library facilitó mucho esto con propiedades persistentes, gestión fácil de conexiones web socket y envío de mensajes a todos los oyentes. ¿Pero qué hacía cada pieza? Autenticación y enrutamiento (Trabajador + D1) Todas las solicitudes llegan a través del Trabajador, ya sea autenticado o no. Si no está autenticado, las acciones disponibles son iniciar sesión o registrarse. Una vez autenticada, puede pasar la solicitud a cualquiera de nuestros Objetos Duraderos (usuario o conversación) para establecer una conexión websocket. Toda la información de autenticación de los usuarios se almacena en una base de datos D1 (la mantuve toda CF para este ejemplo). Servicio al usuario (objeto duradero) Nuestra vista de lista de amigos se conecta directamente con nuestro usuario Durable Object a través de un socket web. Cuando actualizamos nuestro estado, enviamos un mensaje a nuestro DO individual, que luego puede emitirse vía RPC a los DO de nuestros amigos y determinar si están conectados para enviarles un mensaje web socket para actualizaciones en directo. Aquí es donde también almacenamos nuestra lista de amigos en una base de datos SQLite con alcance para nuestro usuario. Servicio de conversación (Objeto duradero) Cada conversación individual entre dos usuarios tiene su propia instancia de DO. Su responsabilidad exclusiva es almacenar mensajes, enviar notificaciones (a través de sockets) cuando se envían nuevos mensajes y enviar una notificación cuando un usuario empieza a escribir para que podamos ver el mensaje "La persona está escribiendo..." Resumen: Crear apps por diversión para revivir recuerdos nostálgicos de la infancia es... Merece la pena.