अजनबियों के साथ गुमनाम रूप से YouTube साथ देखना — 1:1 सिंक्ड वॉचिंग जहाँ एक व्यक्ति जाते ही रूम गायब हो जाता है
(momentbrand.site)इसे algorithm recommendation के बजाय "किसी ने खुद चुनकर चलाया हुआ वीडियो" मिलने के कॉन्सेप्ट के साथ बनाया गया है। पुराने sailboat कॉन्सेप्ट की तरह।
जब कोई anonymous user YouTube लिंक + एक पंक्ति का पत्र "sailboat" के रूप में भेजता है, तो दूसरा anonymous user उस पर क्लिक करके 1:1 viewing room खोलता है। दोनों लोगों के YouTube player एक ही सीन पर sync हो जाते हैं, और वे anonymous chat करते हुए साथ देखते हैं। जैसे ही दोनों में से कोई एक निकलता है, रूम और चैट पूरी तरह गायब हो जाते हैं।
शुरुआत में कॉन्सेप्ट यह था कि वीडियो खत्म होने पर 3 मिनट के countdown के बाद रूम उड़ जाएगा, लेकिन इस्तेमाल करके देखा तो अगर सामने वाला अच्छा मैच हो तो "एक और वीडियो" स्वाभाविक लगता है — इसलिए वीडियो खत्म होने के बाद भी रूम बनाए रखने और होस्ट द्वारा वीडियो बदलकर देखते रहने वाले तरीके में इसे बदल दिया।
बनाते समय जो हिस्से मज़ेदार थे / जिनमें काफ़ी माथापच्ची हुई:
- Sync: सर्वर reference time तय करता है (RTT correction), 0.5 सेकंड के भीतर drift को नज़रअंदाज़ किया जाता है, 2 सेकंड के भीतर हो तो playback speed को 0.95~1.05x करके बिना user को पता चले sync कराया जाता है, और उससे ज़्यादा हो तो
seekToसे force correction किया जाता है। ad चलने के दौरान correction रोक दिया जाता है। - असली माथापच्ची live stream में हुई। live में
seekToकेवल DVR window के अंदर काम करता है, लेकिन दोनों viewers की DVR window अलग हो सकती है, इसलिए "होस्ट live edge पर है" इस इरादे को सामने वाले की window के हिसाब से translate करना पड़ा।loading→play→loadingवाला infinite echo loop भी था — commit log देखा तो सिर्फ live sync fix के ही 7 commits थे। - Matching race: एक ही sailboat पर एक साथ कई लोगों के चढ़ने की स्थिति को Redis Lua script के atomic lock से रोका गया (
5명 동시 join 테스트में यह confirm किया कि सिर्फ 1 व्यक्ति जीतता है)। - Embed-blocked वीडियो (error 153) में IFrame API
onErrorनहीं भेजता, इसलिए स्क्रीन बस काली रह जाती है। इसे 8 सेकंड playback watchdog से detect करके "चलाया नहीं जा सकता" का संदेश दिखाने दिया। - Anonymous 1:1 होने के कारण बहुत से safety guardrails लगाए: chat को पूरी तरह server-side sanitize करना, external contact details को auto-mask करना, AI moderation + accumulated reports पर block, और crisis keyword detect होने पर counseling helpline guidance दिखाना।
स्टैक: Next.js 15 / Fastify 5 / Socket.io / Redis 7 / Postgres 16, मोबाइल पर Expo(RN)
बिना sign-up के इसे तुरंत आज़माया जा सकता है। इस हफ्ते iOS app भी App Store पर आ गया है: https://apps.apple.com/kr/app/float/id6777661839
फीडबैक का स्वागत है।
अभी कोई टिप्पणी नहीं है.