रीयल-टाइम सहयोगी संपादन क्या है?

रीयल-टाइम सहयोगी संपादन कई लोगों को एक ही दस्तावेज़ पर एक साथ काम करने की अनुमति देता है, जिसमें प्रत्येक व्यक्ति के परिवर्तन तुरंत सभी को दिखाई देते हैं। प्रारंभिक सिस्टम Operational Transformation (OT) का उपयोग करते थे — एक तकनीक जो विरोधाभासी संपादनों को तुरंत पुनः क्रमित करती है — लेकिन OT को हर परिवर्तन को मध्यस्थता करने के लिए एक केंद्रीय सर्वर की आवश्यकता होती है। Yjs जैसे आधुनिक सिस्टम Conflict-free Replicated Data Types (CRDTs) का उपयोग करते हैं: एक गणितीय ढांचा जहां कोई भी दो प्रतिकृतियां किसी भी क्रम में विलीन हो सकती हैं और हमेशा एक ही परिणाम में परिवर्तित होती हैं, बिना किसी केंद्रीय प्राधिकार को यह तय करने की आवश्यकता के कि कौन "जीतता" है।

CRDTs ऑफ़लाइन संपादन को स्वाभाविक बनाते हैं: उपयोगकर्ता डिस्कनेक्ट होने पर भी संपादन जारी रख सकते हैं, और जब वे पुनः कनेक्ट करते हैं तो उनके परिवर्तन स्वच्छ रूप से विलीन हो जाते हैं। यही कारण है कि CRDTs पर निर्मित रीयल-टाइम सहयोगी संपादक तुरंत महसूस होते हैं — संपादन पहले स्थानीय रूप से लागू होते हैं और फिर सहकर्मियों को सिंक किए जाते हैं, बजाय स्क्रीन पर दिखाई देने से पहले सर्वर के लिए राउंड-ट्रिप की प्रतीक्षा करने के।

उपकरण विवरण

सहयोगी कोड संपादक एक रीयल-टाइम मल्टीप्लेयर कोड संपादक है जो Yjs और CodeMirror 6 द्वारा संचालित है। कमरे का URL अपने सहकर्मियों के साथ साझा करें और कमरे में सभी एक ही दस्तावेज़ को एक साथ संपादित करते हैं, प्रत्येक व्यक्ति का कर्सर और चयन एक लेबल वाले संकेतक में दिखाया जाता है।

संपादक दर्जनों प्रोग्रामिंग भाषाओं के लिए सिंटैक्स हाइलाइटिंग का समर्थन करता है, जिसे साझा भाषा ड्रॉपडाउन के माध्यम से चुना जा सकता है — एक ब्राउज़र में भाषा बदलने से यह कमरे में सभी के लिए तुरंत अपडेट हो जाती है। फ़ाइलें Open File बटन के साथ आपकी स्थानीय डिस्क से लोड की जा सकती हैं और Save File के साथ वापस डाउनलोड की जा सकती हैं।

विशेषताएं

  • लाइव मल्टी-यूजर कर्सर: प्रत्येक सहयोगी का कर्सर और चयन एक रंग-कोडित, नामित लेबल के साथ दिखाया जाता है; एक ही स्थिति पर कई कर्सर एक एकल "N उपयोगकर्ता" संकेतक में संक्षिप्त होते हैं ताकि दृश्य शोर कम हो।
  • साझा भाषा चयन: सक्रिय प्रोग्रामिंग भाषा कमरे में बनी रहती है ताकि सभी प्रतिभागी हमेशा एक ही सिंटैक्स हाइलाइटिंग देखें, और देर से शामिल होने वाले तुरंत सही स्थिति प्राप्त करें।
  • फ़ाइलें स्थानीय रूप से खोलें और सहेजें: डिस्क से किसी भी स्रोत फ़ाइल को सीधे साझा संपादक में लोड करें, या वर्तमान दस्तावेज़ को सही एक्सटेंशन के साथ फ़ाइल के रूप में डाउनलोड करें।

यह कैसे काम करता है

जब आप एक कमरे में शामिल होते हैं, तो संपादक फ़ाइल सामग्री का प्रतिनिधित्व करने वाली एक साझा Y.Text नोड के साथ एक Yjs दस्तावेज़ बनाता है। प्रत्येक कीस्ट्रोक एक कॉम्पैक्ट बाइनरी Yjs अपडेट के रूप में एन्कोड किया जाता है, Base64 में क्रमबद्ध किया जाता है, और एक WebSocket कमरे पर प्रसारित किया जाता है। सभी जुड़े हुए सहकर्मी अपनी स्वयं की प्रतिकृति पर अपडेट लागू करते हैं; CRDT गारंटी के कारण, सभी प्रतिकृतियां एक ही पाठ में परिवर्तित होती हैं चाहे अपडेट किस क्रम में आएं।

कर्सर और चयन स्थितियां एक हल्के Awareness परत के माध्यम से साझा की जाती हैं जो स्थिति डेटा को एक ही WebSocket कमरे के माध्यम से रूट करता है। पूर्ण दस्तावेज़ स्थिति को debounce किया जाता है और हर सेकंड persistent कमरे स्टोरेज में लिखा जाता है, इसलिए जो उपयोगकर्ता सत्र शुरू होने के बाद शामिल होते हैं वे तुरंत वर्तमान दस्तावेज़ प्राप्त करते हैं।

विकल्प समझाया गया

  • भाषा ड्रॉपडाउन — संपादक के लिए सिंटैक्स हाइलाइटिंग भाषा का चयन करता है। यह विकल्प सभी कमरे के सदस्यों को प्रसारित किया जाता है ताकि सभी सुसंगत हाइलाइटिंग देखें। ड्रॉपडाउन तब तक अक्षम रहता है जब तक आप एक कमरे से जुड़े न हों।
  • Open File — एक स्थानीय फ़ाइल पिकर खोलता है और चयनित फ़ाइल की पाठ सामग्री को साझा Yjs दस्तावेज़ में लोड करता है, कमरे में सभी के लिए वर्तमान सामग्री को प्रतिस्थापित करता है।
  • Save File — वर्तमान संपादक सामग्री को फ़ाइल के रूप में डाउनलोड करता है। फ़ाइल एक्सटेंशन स्वचालित रूप से चयनित भाषा के आधार पर चुना जाता है।
  • थीम — संपादक आपकी सिस्टम डार्क/लाइट प्राथमिकता का पालन करता है (localStorage में संग्रहीत)। डार्क और लाइट संपादक थीम के बीच स्विच करने के लिए अपने OS या ब्राउज़र थीम को टॉगल करें।

सीमाएं

  • सिंक करने के लिए रिले सर्वर के लिए एक सक्रिय WebSocket कनेक्शन आवश्यक है; यदि कनेक्शन ड्रॉप हो जाता है, तो ऑफ़लाइन में किए गए संपादन पुनः कनेक्ट होने पर स्वचालित रूप से पुनः सिंक हो जाएंगे।
  • कोई persistent संस्करण इतिहास नहीं है — एक बार सत्र समाप्त हो जाने और कमरा बंद हो जाने के बाद, दस्तावेज़ चला जाता है जब तक आप इसे Save File बटन के साथ स्थानीय रूप से सहेजते हैं।
  • बाइनरी फ़ाइलें (छवियां, संकलित बाइनरी, आदि) लोड नहीं की जा सकती हैं; संपादक केवल सादे-पाठ स्रोत फ़ाइलों के साथ काम करता है।
  • यह उपकरण बीटा में है; कमरे की स्थिरता और अधिकतम समवर्ती उपयोगकर्ता सीमित हो सकते हैं।

सुझाव

  • सहयोगियों को आमंत्रित करने के लिए अपने ब्राउज़र के पता बार से पूर्ण कमरे का URL साझा करें — कमरे की ID URL में एन्कोड की गई है।
  • एक सत्र के अंत में Save File के साथ एक स्थानीय प्रति सहेजें; कमरे का डेटा अनिश्चित काल तक persist होने की गारंटी नहीं है।
  • यदि किसी सहयोगी का कर्सर लेबल महत्वपूर्ण कोड को कवर कर रहा है, तो लेबल संपादक के दाएं किनारे के पास होने पर स्वचालित रूप से बाईं ओर फ्लिप हो जाता है।