Zbudowałem aplikację Instant Messenger całkowicie na @Cloudflare. Zajęło to 1 dzień, 3 pliki, 4 zasoby... i jest gotowa do skalowania od 0 do milionów. Worker → autoryzacja i routowanie Baza danych D1 → przechowywanie użytkownika/hasła User DO → profil użytkownika i znajomi Conversation DO → wiadomości Blog w odpowiedzi, ale szybki teaser tutaj: Biblioteka cloudflare/actors sprawiła, że wiele z tego było łatwe dzięki właściwościom persist, łatwemu zarządzaniu połączeniami web socket oraz wysyłaniu wiadomości do wszystkich słuchaczy. Ale co robił każdy element? Autoryzacja i routowanie (Worker + D1) Wszystkie żądania przechodzą przez Worker, czy to uwierzytelnione, czy nie. Jeśli nieautoryzowane, dostępne akcje to logowanie lub rejestracja. Po uwierzytelnieniu można przekazać żądanie do jednego z naszych Durable Objects (użytkownik lub rozmowa), aby nawiązać połączenie web socket. Wszystkie informacje o uwierzytelnieniu użytkowników są przechowywane w bazie danych D1 (wszystko trzymane w CF w tym przykładzie). Usługa użytkownika (Durable Object) Widok naszej listy znajomych łączy się bezpośrednio z naszym Durable Object użytkownika za pośrednictwem web socket. Gdy aktualizujemy nasz status, wysyłamy wiadomość do naszego indywidualnego DO, które następnie może nadawać przez RPC do DO naszych znajomych i ustalać, czy są online, aby wysłać im wiadomość web socket w celu aktualizacji na żywo. Tutaj również przechowujemy naszą listę znajomych w bazie danych SQLite przypisanej do naszego użytkownika. Usługa rozmowy (Durable Object) Każda indywidualna rozmowa między dwoma użytkownikami ma swoją własną instancję DO. Jej jedyną odpowiedzialnością jest przechowywanie wiadomości, wysyłanie powiadomień (za pośrednictwem socketów) gdy nowe wiadomości są wysyłane oraz wysyłanie powiadomienia, gdy użytkownik zaczyna pisać, abyśmy mogli zobaczyć "Osoba pisze..." TLDR; Budowanie aplikacji dla zabawy w celu odtworzenia nostalgicznych wspomnień z dzieciństwa jest... warte tego.