Slepptu yfir að aðalinnihaldinu

Hluti

Tækni

Sú raunveruleg Dueli-stökk í tveimur lögum: einfaldútgáfa og sýn verkfræðinga.

Síða skýrir tæknina sem Dueli notar raunverulega, í tveimur lögum: einfaldan sýn fyrir alla og verkfræðilega sýn fyrir sérfræðinga. Engin tækni er á listi nema núverandi skóði noti hana.

Í einfaldri orðaforði

Dueli keyrir í vafra á heimsnetkerfi Cloudflare. Tvö keppendur hittast í beinum myndspjallssími á tækjum sínum (WebRTC peer-to-peer); þegar netkerfi blokkar beina slóð, hjálpar TURN-skeyti tenginguna í gegn.

Í keppni sameinar vafrið myndatófurnar í eina mynd og tekur upp þær sem 5 sekúndu brot. Brotin eru send inn þegar þau myndast, hægt er að spila þá í réttri röð og þau eru sett saman í fullan endurspil eftir að keppniinnu lýkur.

Upptaka keppna má sækja sem MP4-skrá. þegar þarf að umbreyta upptöku, fer umbreytingin fram í vafranum notandans með FFmpeg.wasm, svo skráin er ekki send til ytra umbreytingarþjónustu.

Gögn vefþjónustu eru í D1, síður og API eru smíðuð með Hono og TypeScript á Cloudflare, og viðmóðið notar Tailwind CSS. Bein uppfærir koma í gegnum SSE og könnun.

Fyrir verkfræðinga

Keyrslutími: Cloudflare Pages/Workers með Hono 4 á TypeScript. D1 (SQLite) er gagnagrunnurinn. Vite smíðar Worker-pakkan, Tailwind CSS 4 stílar viðmótið, og esbuild pakkar vafraupptökuna.

Bein miðlun: vafra RTCPeerConnection flytur WebRTC milli gests andstæðings. ICE þjónar eru gefnir út fyrir hæfni í GET /api/signaling/ice-servers; Cloudflare Calls TURN (TURN_TOKEN_ID og TURN_API_TOKEN) eða sjálfsvirkur coturn (TURN_URL og TURN_SECRET) geta tengt, með STUN-afleiðingu þegar engin er stillt.

Upptaka: canvas-samsetning teiknar báðar myndatófur, og MediaRecorder sendir út brot hverja 5 sekúndu. Gestur skráar hvert brot í POST /api/chunks/register (stutt-líf einnota lykill tengd keppni, röð og hámarksfjölda bæta), sendir það upp, sannar það með GET /verify og tilkynnir POST /receipt. Endurspölun lesur GET /api/chunks/playlist/:id, og núverandi lokaferli framleiðir VOD.

Niðurhöl: @ffmpeg/core 0.12.10 keyrir í sjálfsvirkum vafruvinnslu fyrir MP4-umbreytingu, með stofnanlegri endurpakkningu fyrir upptökur sem eru nú þegar MP4-kompatíbilar.framdrift og minnishamör eru samin í þjónustu notanda.

Rauntíma: SSE gegnum GET /api/sse flytur bein uppfærir, og merking notar HTTP könnun; framleiðsluleiðinnar notar ekki WebSocket.

Gæði: Vitest þekjar einingar og samninga viðmóts, og Playwright þekjar endan-til-endu vafrafarvegir. Markdown skjöl eru birgð með marked, og PostCSS með Autoprefixer lokið CSS-rásinni.

Tækniþjónusturnar í þessari geymslu

  • Cloudflare Pages / Workers Vefhýsing og þjónustukeyrslur
  • Cloudflare D1 (SQLite) Gagnagrunnur forritsins
  • Hono 4 HTTP slóðir, síður og API
  • TypeScript 5 Tegundsett upprunaskrá fyrir þjónustu og viðskiptavél
  • Tailwind CSS 4 + PostCSS + Autoprefixer Stílblöndun viðmóts og CSS-rás
  • Vite 7 + esbuild Worker-búta og vafrainnsláttarpunktar
  • WebRTC (RTCPeerConnection) + TURN/STUN Bein spjall og myndvíð milli þátttakenda
  • Canvas samsetning + MediaRecorder 5 sekúnda spjallföt í vafranum
  • FFmpeg.wasm (@ffmpeg/core 0.12.10) Umskipun á MP4 í vafranum og niðurhal
  • marked 17 Markdown-virkjun fyrir stjórnað skjöl
  • Vitest 5 Eininga- og viðmótsprófun
  • Playwright Endilangar vafraprófanir
  • Wrangler 4 þróunar- útsetningartól fyrir Cloudflare
  • SSE + HTTP polling Beinar uppfærslar utan miðilsins

Listinn takmarkast við það sem package.json og gagnasafnið innihalda. Þetta er tækniskýring, ekki samningur eða stuðningsyfirlýsing.

Til baka í miðstöð leiðbeinanna