1 poin oleh previewapp 7 jam lalu | Belum ada komentar. | Bagikan ke WhatsApp

Saya membuat ini dengan konsep bertemu "video yang dipilih dan diputar langsung oleh seseorang", bukan rekomendasi algoritma. Konsep perahu layar lama

Saat pengguna anonim mengirim tautan YouTube + surat satu baris lewat "perahu layar", pengguna anonim lain bisa mengkliknya dan ruang tonton 1:1 akan terbuka. Player YouTube kedua orang itu disinkronkan ke adegan yang sama, lalu mereka menonton bersama sambil mengobrol anonim. Begitu salah satu dari mereka pergi, ruang dan seluruh chat langsung menghilang.

Awalnya konsepnya adalah setelah video selesai, ruang akan dihancurkan setelah hitung mundur 3 menit. Tapi setelah dipakai, kalau bertemu orang yang cocok, rasanya alami untuk bilang "satu lagi" — jadi meski videonya selesai, ruang tetap dipertahankan dan host bisa mengganti video lalu lanjut menonton bersama.

Bagian yang seru/yang bikin repot saat membuatnya:

  • Sinkronisasi: server menetapkan waktu acuan (dengan koreksi RTT), drift di bawah 0,5 detik diabaikan, selisih di bawah 2 detik dikejar diam-diam dengan kecepatan putar 0.95~1.05x, dan jika lebih dari itu dikoreksi paksa dengan seekTo. Saat iklan diputar, koreksi dihentikan.
  • Repot yang sebenarnya justru live stream. Pada live, seekTo hanya bekerja di dalam DVR window, tetapi DVR window kedua penonton bisa berbeda, jadi niat "host berada di live edge" harus diterjemahkan berdasarkan window milik lawan bicara. Sampai ada infinite echo loop loading→play→loading — dari commit log, ternyata fix sinkronisasi live saja ada 7.
  • Race pada matching: saya mencegah beberapa orang naik ke perahu layar yang sama secara bersamaan dengan atomic lock Redis Lua script (dikonfirmasi hanya 1 orang yang menang dalam uji 5 orang join bersamaan).
  • Video dengan pemblokiran embed (error 153) membuat IFrame API tidak memicu onError, sehingga layar hanya tetap hitam; saya mendeteksinya dengan watchdog pemutaran 8 detik lalu menampilkan panduan "tidak bisa diputar".
  • Karena ini anonim 1:1, saya memasang banyak pengaman: seluruh chat disanitize di server, kontak eksternal dimasking otomatis, AI moderation + blokir berdasarkan akumulasi laporan, dan panduan nomor konseling saat kata kunci krisis terdeteksi.

Stack: Next.js 15 / Fastify 5 / Socket.io / Redis 7 / Postgres 16, untuk mobile memakai Expo(RN)

Bisa langsung dicoba tanpa pendaftaran. Minggu ini aplikasi iOS juga sudah masuk App Store: https://apps.apple.com/kr/app/float/id6777661839
Masukan sangat diterima.

Belum ada komentar.

Belum ada komentar.