Əsas məzmuna keç

Bölmə

Texnologiya

İki qatda real Dueli yığını: sadə dillə izah və mühəndis baxışı.

Bu səhifə Dueli’nin əslində istifadə etdiyi texnologiyaları iki qatda izah edir: hamı üçün sadə dil baxışı və mütəxəssislər üçün mühəndis baxışı. Hazırkı kod istifadə etməyən heç bir texnologiya siyahılanmır.

Sadə dillə

Dueli brauzerdə Cloudflare-in qlobal şəbəkəsində işləyir. İki rəqib öz cihazları arasında canlı video zəngdə görüşür (WebRTC peer-to-peer); şəbəkə birbaşa yolu bloklayanda TURN releyi qoşulmanı kömək edir.

Yarış zamanı brauzer hər iki kamera axınını bir şəkildə birləşdirir və onu qısa 5 saniyəlik hissələrlə yazır. Hissələr hazırlandıqca yüklənir, ardıcıllıqla oynadıla bilər və matç bitdikdən sonra tam təkrara yığılır.

Yazılıb yarışlar MP4 faylı kimi endirilə bilər. Yazının çevrilməsi lazım olanda çevrilmə ziyarətçinin brauzerində FFmpeg.wasm ilə işləyir, ona görə fayl xarici çevirmə xidmətinə göndərilmir.

Platforma məlumatları D1-də yaşayır, səhifələr və API-lər Cloudflare üzərində Hono və TypeScript ilə qurulub və interfeys Tailwind CSS istifadə edir. Canlı yeniləmələr SSE və sorğulama ilə gəlir.

Mühəndislər üçün

İşlətmə: Cloudflare Pages/Workers, TypeScript üzərində Hono 4 ilə. D1 (SQLite) verilənlər bazasıdır. Vite Worker paketini qurur, Tailwind CSS 4 interfeysi stilləşdirir və esbuild brauzer giriş nöqtələrini paketləyir.

Canlı media: brauzer RTCPeerConnection ev sahibi ilə rəqib arasında WebRTC daşıyır. ICE serverləri hər sessiya üçün GET /api/signaling/ice-servers ünvanından verilir; Cloudflare Calls TURN (TURN_TOKEN_ID və TURN_API_TOKEN) və ya xüsusi yerləşdirilmiş coturn (TURN_URL və TURN_SECRET) reley edə bilər, heç biri tənzimlənməyibsə yalnız-STUN ehtiyatı var.

Yazma: kanvas kompozitoru hər iki axını çəkir və MediaRecorder hər 5 saniyədə bir hissə buraxır. Ev sahibi hər hissəni POST /api/chunks/register ünvanında qeydiyyatdan keçirir (yarışa, ardıcıllığa və bayt hədinə bağlı qısamüddətli bir dəfəlik açar), onu yükləyir, GET /verify ilə yoxlayır və POST /receipt bildirir. Oynatma GET /api/chunks/playlist/:id oxuyur və mövcud yekunlaşdırma addımı VOD hazırlayır.

Endirmələr: @ffmpeg/core 0.12.10 xüsusi yerləşdirilmiş brauzer işçisində MP4 çevrilməsi üçün işləyir, artıq MP4-uyğun yazılar üçün struktural remux yolu var. Gedişat və yaddaş hədləri müştəri xidmətində idarə olunur.

Real vaxt: GET /api/sse vasitəsilə SSE canlı yeniləmələr daşıyır və siqnalizasiya HTTP sorğulama işlədir; istehsal yolu WebSocket işlətmir.

Keyfiyyət: Vitest vahid və UI müqavilələrini əhatə edir, Playwright ucdan-uca brauzer axınlarını əhatə edir. Markdown sənədləri marked ilə göstərilir və PostCSS Autoprefixer ilə birlikdə CSS boru xəttini tamamlayır.

Bu depodakı texnologiya yığını

  • Cloudflare Pages / Workers Hostinq və server işlətmə mühiti
  • Cloudflare D1 (SQLite) Tətbiq verilənlər bazası
  • Hono 4 HTTP marşrutları, səhifələr və API
  • TypeScript 5 Server və müştəri üçün tipli mənbə kod
  • Tailwind CSS 4 + PostCSS + Autoprefixer İnterfeys stilləşdirməsi və CSS boru xətti
  • Vite 7 + esbuild Worker paketi və brauzer giriş nöqtələri
  • WebRTC (RTCPeerConnection) + TURN/STUN İştirakçılar arasında canlı audio və video
  • Canvas kompozitoru + MediaRecorder Brauzerdə 5 saniyəlik yazılmış hissələr
  • FFmpeg.wasm (@ffmpeg/core 0.12.10) Brauzer daxilində MP4 çevrilməsi və endirmə
  • marked 17 İdarə olunan sənədlər üçün Markdown göstərilməsi
  • Vitest 5 Vahid və UI test dəsti
  • Playwright Ucdan-uca brauzer testləri
  • Wrangler 4 Cloudflare inkişaf və yerləşdirmə alətləri
  • SSE + HTTP sorğulama Media yolundan kənar canlı yeniləmələr

Siyahı package.json və depunun əslində ehtiva etdiyi ilə məhdudlaşır. Bu texniki təsvirdir, partnyorluq və ya dəstək iddiası deyil.

Bələdçi mərkəzinə qayıt