1 คะแนน โดย previewapp 7 시간 전 | ยังไม่มีความคิดเห็น | แชร์ทาง WhatsApp

ทำขึ้นด้วยคอนเซปต์ว่าไม่ใช่วิดีโอที่อัลกอริทึมแนะนำ แต่เป็น "วิดีโอที่มีใครสักคนเลือกมาแล้วเปิดให้ดูโดยตรง" คอนเซปต์เรือใบสมัยก่อน

เมื่อผู้ใช้ไม่ระบุตัวตนส่งลิงก์ 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
ยินดีรับฟีดแบ็กครับ

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น