ดู YouTube กับคนแปลกหน้าแบบไม่ระบุตัวตน — ดูพร้อมกันแบบ 1:1 ที่ห้องจะหายไปเมื่อมีคนออก
(momentbrand.site)ทำขึ้นด้วยคอนเซปต์ว่าไม่ใช่วิดีโอที่อัลกอริทึมแนะนำ แต่เป็น "วิดีโอที่มีใครสักคนเลือกมาแล้วเปิดให้ดูโดยตรง" คอนเซปต์เรือใบสมัยก่อน
เมื่อผู้ใช้ไม่ระบุตัวตนส่งลิงก์ YouTube + จดหมายสั้น ๆ ออกไปเป็น 'เรือใบ' ผู้ใช้ไม่ระบุตัวตนอีกคนก็สามารถกดมันเพื่อเปิดห้องรับชมแบบ 1:1 ได้ ผู้เล่น YouTube ของทั้งสองคนจะซิงก์ให้อยู่ที่ฉากเดียวกัน และดูไปพร้อมกับแชตแบบไม่ระบุตัวตนได้ ทันทีที่ฝ่ายใดฝ่ายหนึ่งออก ห้องและแชตทั้งหมดก็จะหายไป
ตอนแรกตั้งใจให้เมื่อวิดีโอจบลงจะมีการนับถอยหลัง 3 นาทีแล้วห้องระเบิด แต่พอลองใช้จริง ถ้าเจอคนที่คุยกันถูกคอก็มักจะรู้สึกว่า "ดูอีกเรื่องไหม" อย่างเป็นธรรมชาติ — เลยเปลี่ยนเป็นให้ห้องยังคงอยู่ต่อแม้วิดีโอจะจบ และให้โฮสต์เปลี่ยนวิดีโอเพื่อดูต่อกันได้
จุดที่สนุก/จุดที่ลองผิดลองถูกระหว่างทำ:
- การซิงก์: เซิร์ฟเวอร์จะเป็นตัวกำหนดเวลาอ้างอิง (ชดเชย RTT), ถ้า drift ไม่เกิน 0.5 วินาทีจะปล่อยผ่าน, ถ้าอยู่ภายใน 2 วินาทีจะไล่ให้ทันแบบที่ผู้ใช้ไม่รู้ตัวด้วยความเร็วเล่น 0.95~1.05x และถ้าเกินกว่านั้นจะบังคับแก้ด้วย
seekToระหว่างโฆษณากำลังเล่นจะหยุดการปรับแก้ชั่วคราว - จุดที่ลองผิดลองถูกจริง ๆ คือไลฟ์สตรีม ไลฟ์ใช้
seekToได้เฉพาะภายใน DVR window เท่านั้น แต่ DVR window ของผู้ชมสองคนไม่เท่ากัน จึงต้องแปลเจตนาว่า "โฮสต์อยู่ที่ไลฟ์เอดจ์" ให้เป็นเกณฑ์ตาม window ของอีกฝ่าย แถมยังเจอ infinite echo loop แบบ loading→play→loading อีก — ดูจาก commit log แล้วมีเฉพาะ live sync fix ก็ตั้ง 7 อัน - matching race: ป้องกันกรณีมีหลายคนขึ้นเรือใบลำเดียวกันพร้อมกันด้วย atomic lock ของ Redis Lua script (ทดสอบ join พร้อมกัน 5 คนแล้วยืนยันว่าชนะได้เพียง 1 คน)
- วิดีโอที่บล็อกการ embed (ข้อผิดพลาด 153): IFrame API ไม่ยิง
onErrorทำให้หน้าจอดำค้างอย่างเดียว เลยตรวจจับด้วย watchdog การเล่น 8 วินาทีแล้วขึ้นข้อความว่า "ไม่สามารถเล่นได้" - เพราะเป็นแชตไม่ระบุตัวตนแบบ 1:1 เลยใส่มาตรการความปลอดภัยไว้เยอะ: sanitize แชตทั้งหมดที่ฝั่งเซิร์ฟเวอร์, มาสก์ข้อมูลติดต่อภายนอกอัตโนมัติ, AI moderation + บล็อกจากการสะสมรายงาน, และถ้าตรวจพบคีย์เวิร์ดภาวะวิกฤตจะแนะนำสายด่วนให้คำปรึกษา
สแตก: Next.js 15 / Fastify 5 / Socket.io / Redis 7 / Postgres 16, ฝั่งมือถือใช้ Expo(RN)
ทดลองใช้ได้ทันทีโดยไม่ต้องสมัคร สัปดาห์นี้แอป iOS ก็ขึ้น App Store แล้วด้วย: https://apps.apple.com/kr/app/float/id6777661839
ยินดีรับฟีดแบ็กครับ
ยังไม่มีความคิดเห็น