Jeg bygde en Instant Messenger-applikasjon helt på @Cloudflare. Det tok 1 dag, 3 filer, 4 ressurser... Og den er klar til å skalere fra 0 til millioner. Arbeider → autentisering og ruting D1-database → lagre bruker/pass Bruker GJØR → brukerprofil og venner Samtale GJØR → meldinger Blogg som svar, men en rask teaser her: Cloudflare/Actors-biblioteket gjorde mye av dette enkelt med persist-egenskaper, enkel websocket-tilkoblingshåndtering og sending av meldinger til alle lyttere. Men hva gjorde hvert stykke? Auth & Routing (Worker + D1) Alle forespørsler kommer gjennom Arbeideren, enten autentisert eller ikke. Hvis det ikke er autentisert, er tilgjengelige handlinger å logge inn eller registrere seg. Når den er autentisert, kan den sende forespørselen videre til en av våre Durable Objects (bruker eller samtale) for å etablere en websocket-tilkobling. All brukerens autentiseringsinformasjon lagres i en D1-database (holdt alt CF for dette eksempelet). Brukertjeneste (varig objekt) Vår vennelistevisning kobler seg direkte til brukerens Durable Object via websocket. Når vi oppdaterer statusen vår sender vi en melding til vår individuelle DO, som deretter kan kringkastes via RPC til våre venners DO-er og avgjøre om de er på nett for å sende dem en websocket-melding for live-oppdatering. Her lagrer vi også vennelisten vår i en SQLite-database tilpasset brukeren vår. Samtaletjeneste (varig gjenstand) Hver enkelt samtale mellom to brukere får sin egen DO-instans. Dens eneste ansvar er å lagre meldinger, sende varsler (via sockets) når nye meldinger sendes, og sende en varsling når en bruker begynner å skrive slik at vi kan se «Personen skriver...» TLDR; Å bygge apper for moro skyld for å gjenoppleve nostalgiske barndomsminner er... Verdt det.