រំលងទៅខ្លឹមសារសំខាន់

ផ្នែក

បច្ចេកវិទ្យា

ជង់បច្ចេកទេសពិតរបស់ Dueli ជាពីរជាន់៖ ការពន្យល់ដោយភាសាសាមញ្ញ និងទិដ្ឋភាពវិស្វកម្ម។

ទំព័រនេះពន្យល់ពីបច្ចេកវិទ្យាដែល Dueli ប្រើពិតប្រាកដ ជាពីរជាន់៖ ទិដ្ឋភាពភាសាសាមញ្ញសម្រាប់អ្នកទាំងអស់គ្នា និងទិដ្ឋភាពវិស្វកម្មសម្រាប់អ្នកឯកទេស។ គ្មានបច្ចេកវិទ្យាណាមួយត្រូវបានរាយ លុះត្រាតែកូដបច្ចុប្បន្នប្រើវា។

ជាភាសាសាមញ្ញ

Dueli ដំណើរការក្នុងកម្មវិធីរុករក លើបណ្តាញសកលរបស់ Cloudflare។ គូប្រកួតពីរនាក់ជួបគ្នាក្នុងការហៅវីដេអូផ្ទាល់ រវាងឧបករណ៍របស់ពួកគេ (WebRTC ពីគូទៅគូ); ពេលបណ្តាញរាំងផ្លូវផ្ទាល់ TURN relay ជួយធ្វើឲ្យការតភ្ជាប់ឆ្លងកាត់បាន។

ក្នុងអំឡុងការប្រកួត កម្មវិធីរុករកផ្គុំចំណងដៃកាមេរ៉ាទាំងពីរទៅជារូបភាពមួយ ហើយថតវាជាកំណាត់ខ្លី 5 វិនាទី។ កំណាត់ទាំងនោះត្រូវបានបង្ហោះពេលបង្កើត អាចលេងឡើងវិញតាមលំដាប់ ហើយត្រូវផ្គុំទៅជាការលេងឡើងវិញពេញលេញ បន្ទាប់ពីការប្រកួតបញ្ចប់។

ការប្រកួតដែលបានថតអាចទាញយកជាឯកសារ MP4។ ពេលការថតត្រូវការបម្លែង ការបម្លែងដំណើរការក្នុងកម្មវិធីរុករករបស់អ្នកទស្សនា ដោយ FFmpeg.wasm ដូច្នេះឯកសារមិនត្រូវបានផ្ញើទៅសេវាបម្លែងខាងក្រៅទេ។

ទិន្នន័យវេទិកាស្ថិតក្នុង D1 ទំព័រ និង API បង្កើតដោយ Hono និង TypeScript លើ Cloudflare ហើយចំណុចប្រទាក់ប្រើ Tailwind CSS។ ការធ្វើបច្ចុប្បន្នភាពផ្ទាល់មកដល់តាមរយៈ SSE និង polling។

សម្រាប់វិស្វករ

ពេលដំណើរការ៖ Cloudflare Pages/Workers ជាមួយ Hono 4 លើ TypeScript។ D1 (SQLite) ជាមូលដ្ឋានទិន្នន័យ។ Vite បង្កើតកញ្ចប់ Worker Tailwind CSS 4 ធ្វើស្តីលចំណុចប្រទាក់ ហើយ esbuild បង្កើតកញ្ចប់ចំណុចចូលកម្មវិធីរុករក។

មេឌៀផ្ទាល់៖ ការតភ្ជាប់គូក្នុងកម្មវិធីរុករក ផ្ទុក WebRTC រវាងម្ចាស់ផ្ទះ និងគូប្រឆាំង។ ម៉ាស៊ីនមេ ICE ត្រូវបានចេញក្នុងមួយសម័យពី GET /api/signaling/ice-servers; Cloudflare Calls TURN (TURN_TOKEN_ID និង TURN_API_TOKEN) ឬ coturn ដែលបម្រើដោយខ្លួនឯង (TURN_URL និង TURN_SECRET) អាចទ្រនាន់បាន ជាមួយជម្រើសចុងក្រោយ STUN តែមួយពេលគ្មានអ្វីត្រូវបានកំណត់។

ការថត៖ ឧបករណ៍ផ្គុំ Canvas គំនូរចំណងដៃទាំងពីរ ហើយ MediaRecorder បញ្ចេញកំណាត់ម្តងមួយ 5 វិនាទី។ ម្ចាស់ផ្ទះចុះឈ្មោះកំណាត់នីមួយៗនៅ POST /api/chunks/register (សោប្រើម្តងរយៈពេលខ្លី ភ្ជាប់នឹងការប្រកួត លំដាប់ និងដែនដី byte) បង្ហោះវា ផ្ទៀងផ្ទាត់វាដោយ GET /verify ហើយរាយការណ៍ POST /receipt។ ការលេងឡើងវិញអាន GET /api/chunks/playlist/:id ហើយជំហានបញ្ចប់ដែលមានស្រាប់បង្កើត VOD។

ការទាញយក៖ @ffmpeg/core 0.12.10 ដំណើរការក្នុង worker កម្មវិធីរុករកដែលបម្រើដោយខ្លួនឯង សម្រាប់ការបម្លែង MP4 ជាមួយផ្លូវ remux រចនាសម្ព័ន្ធ សម្រាប់ការថតដែលឆ្លើយសមនឹង MP4 រួចហើយ។ វឌ្ឍនភាព និងព្រំដែនអង្គចងចាំត្រូវបានគ្រប់គ្រងក្នុងសេវាអតិថិជន។

ពេលវេលាពិត៖ SSE តាមរយៈ GET /api/sse ផ្ទុកការធ្វើបច្ចុប្បន្នភាពផ្ទាល់ ហើយសញ្ញាតភ្ជាប់ប្រើ HTTP polling; ផ្លូវផលិតកម្មមិនប្រើ WebSocket ទេ។

គុណភាព៖ Vitest គ្របដណ្តប់កិច្ចសន្យាឯកតា និង UI ហើយ Playwright គ្របដណ្តប់លំហូរកម្មវិធីរុករកពីចុងដល់ចុង។ ឯកសារ Markdown ត្រូវបានបង្ហាញដោយ marked ហើយ PostCSS ជាមួយ Autoprefixer បំពេញដំណើរការ CSS។

ជង់ក្នុងឃ្លាំងនេះ

  • Cloudflare Pages / Workers ការបម្រើ និងពេលដំណើរការម៉ាស៊ីនមេ
  • Cloudflare D1 (SQLite) មូលដ្ឋានទិន្នន័យកម្មវិធី
  • Hono 4 ផ្លូវ HTTP ទំព័រ និង API
  • TypeScript 5 ប្រភពដែលមានប្រភេទសម្រាប់ម៉ាស៊ីនមេ និងអតិថិជន
  • Tailwind CSS 4 + PostCSS + Autoprefixer ការតុបតែងចំណុចប្រទាក់ និងដំណើរការ CSS
  • Vite 7 + esbuild កញ្ចប់ Worker និងចំណុចចូលកម្មវិធីរុករក
  • WebRTC (ការតភ្ជាប់គូ) + TURN/STUN សំឡេង និងវីដេអូផ្ទាល់រវាងអ្នកចូលរួម
  • ឧបករណ៍ផ្គុំ Canvas + MediaRecorder កំណាត់ដែលបានថត 5 វិនាទីក្នុងកម្មវិធីរុករក
  • FFmpeg.wasm (@ffmpeg/core 0.12.10) ការបម្លែង MP4 និងទាញយកក្នុងកម្មវិធីរុករក
  • marked 17 ការបង្ហាញ Markdown សម្រាប់ឯកសារដែលគ្រប់គ្រង
  • Vitest 5 សំណុំសាកល្បងឯកតា និង UI
  • Playwright ការសាកល្បងកម្មវិធីរុករកពីចុងដល់ចុង
  • Wrangler 4 ឧបករណ៍អភិវឌ្ឍ និងដាក់ឱ្យដំណើរការរបស់ Cloudflare
  • SSE + HTTP polling ការធ្វើបច្ចុប្បន្នភាពផ្ទាល់ក្រៅផ្លូវមេឌៀ

បញ្ជីនេះដាក់កំហិតតែអ្វីដែល package.json និងឃ្លាំងមានពិតប្រាកដ។ វាជាការពិពណ៌នាបច្ចេកទេស មិនមែនការអះអាងភាពជាដៃគូ ឬការគាំទ្រទេ។

ត្រឡប់ទៅមជ្ឈមណ្ឌលមគ្គុទ្ទេសក៍វិញ