Eu construí uma aplicação de Mensagens Instantâneas toda em @Cloudflare. Levou 1 dia, 3 arquivos, 4 recursos... e está pronta para escalar de 0 a milhões. Worker → autenticação & roteamento Banco de dados D1 → armazenar usuário/senha User DO → perfil do usuário & amigos Conversation DO → mensagens Blog em resposta, mas uma rápida prévia aqui: A biblioteca cloudflare/actors tornou muito disso fácil com propriedades persistentes, gestão simples de conexões de web socket e envio de mensagens para todos os ouvintes. Mas o que cada parte fez? Autenticação & Roteamento (Worker + D1) Todos os pedidos passam pelo Worker, autenticados ou não. Se não autenticados, as ações disponíveis são fazer login ou se inscrever. Quando autenticado, pode passar o pedido para um dos nossos Objetos Duráveis (usuário ou conversa) para estabelecer uma conexão de web socket. Todas as informações de autenticação dos usuários são armazenadas em um banco de dados D1 (mantivemos tudo CF para este exemplo). Serviço de Usuário (Objeto Durável) Nossa visualização da lista de amigos conecta-se diretamente ao nosso Objeto Durável de usuário via web socket. Quando atualizamos nosso status, enviamos uma mensagem para nosso DO individual que pode então transmitir via RPC para os DO's dos nossos amigos e determinar se eles estão online para enviar uma mensagem de web socket para atualização ao vivo. Aqui também armazenamos nossa lista de amigos em um banco de dados SQLite escopado para nosso usuário. Serviço de Conversa (Objeto Durável) Cada conversa individual entre dois usuários recebe sua própria instância de DO. Sua única responsabilidade é armazenar mensagens, enviar notificações (via sockets) quando novas mensagens são enviadas e enviar uma notificação quando um usuário começa a digitar para que possamos ver "A pessoa está digitando..." Resumindo; Construir aplicativos por diversão, para reviver memórias nostálgicas da infância é... vale a pena.