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.