सहयोग — प्रोजेक्ट का साझा संपादन
सहयोग की सुविधा से कई प्रतिभागी एक ही प्रोजेक्ट खोल सकते हैं: कौन मौजूद है, प्लान, आरेख और पैनल पर उनके कर्सर, और किसी बिंदु या एलिमेंट से जुड़ी टिप्पणियाँ दिखती हैं। संपादन WebSocket और CRDT इंजन के ज़रिए सिंक होते हैं, और ज्यामिति के टकराव अपने आप हल हो जाते हैं।
प्रतिभागियों की भूमिकाएँ
पहुँच तीन भूमिकाओं में से एक के साथ दी जाती है। भूमिका लिंक बनाते समय या ईमेल से आमंत्रण भेजते समय तय होती है, और मालिक इसे रद्द कर सकता है।
| भूमिका | प्रतिभागी क्या कर सकता है |
|---|---|
| viewer | बिना संपादन प्रोजेक्ट देखना |
| checker | देखना और टिप्पणी करना (समीक्षा) |
| co-editor | साथ मिलकर संपादन |
उपयोग कैसे करें: चरण दर चरण
- प्रोजेक्ट खोलें और शेयरिंग लिंक बनाएँ: भूमिका (viewer / checker / co-editor) चुनें और चाहें तो घंटों में समाप्ति अवधि दें। खुले प्रोजेक्ट के बिना लिंक नहीं बनता।
- प्रतिभागियों को आमंत्रित करें — आवश्यक भूमिका के लिए लिंक या ईमेल आमंत्रण भेजें।
- प्रतिभागी लिंक खोलता है और सहमति संवाद में कनेक्शन की पुष्टि करता है (प्रति टैब एक बार)। संवाद केवल सत्यापित पतों के लिए दिखता है (देखें “लिंक सुरक्षा”)।
- साथ काम करें: सहकर्मियों के कर्सर कैनवास पर दिखते हैं, टिप्पणियाँ सीधे प्लान पर चर्चित होती हैं, और co-editor के बदलाव आपके मॉडल में अपने आप लागू होते हैं।
- पहुँच समाप्त करें — समीक्षा पूरी होने पर प्रतिभागी की पहुँच रद्द करें या लिंक बंद करें। प्रतिभागियों की सूची प्रोजेक्ट मालिक को दिखती है।
कर्सर और उपस्थिति
- प्रत्येक प्रतिभागी के कर्सर का अपना रंग और नाम होता है; दिखता है कि वह किस दृश्य पर है: प्लान, सिंगल-लाइन आरेख या पैनल।
- उपस्थिति सूची दिखाती है कि अभी कौन ऑनलाइन है।
- कनेक्शन टूटने पर क्लाइंट लगभग 3 सेकंड बाद अपने आप फिर जुड़ता है और सर्वर से छूटे बदलाव माँगता है।
टिप्पणियाँ
- टिप्पणी प्लान पर किसी बिंदु (निर्देशांक) या किसी एलिमेंट (जैसे ब्रेकर या सॉकेट) से जुड़ती है, और प्रतिभागियों का उल्लेख किया जा सकता है।
- टिप्पणी की दो स्थितियाँ हैं: “खुला” और “हल हुआ”। उत्तर (replies) टिप्पणी के भीतर रखे जाते हैं।
- सूची को स्थिति और एलिमेंट के अनुसार फ़िल्टर किया जा सकता है — किसी विशेष पैनल या कमरे की टिप्पणियाँ जाँचने में सुविधाजनक।
सिंक्रनाइज़ेशन और टकराव कैसे काम करते हैं
प्रत्येक संपादन एक कमांड के रूप में होता है और CRDT ऑपरेशन में बदलता है (LWW रजिस्टर, OR-सेट, लैम्पोर्ट टाइमस्टैम्प वाली वेक्टर घड़ियाँ)। क्लाइंट ऑपरेशन को स्थानीय रूप से लागू करता है और delta संदेश के रूप में भेजता है; कनेक्ट होने पर छूटा हुआ माँगता है (sync_request → sync_response), और पूरी स्थिति snapshot के रूप में आ सकती है। दूरस्थ ऑपरेशन स्थानीय स्टोरेज पर अपने आप लागू होते हैं।
- एक ही ऑब्जेक्ट के एक साथ संपादन निर्धारित तरीके से हल होते हैं (नया टाइमस्टैम्प जीतता है)।
- दीवारों और रूट की ज्यामिति के टकराव एक अलग resolver संभालता है: कटाव और ओवरलैप से मॉडल “बिखरता” नहीं।
- संपादित ऑब्जेक्ट को लॉक किया जा सकता है; लॉक लगभग 30 सेकंड बाद अपने आप हट जाता है, इसलिए अटके लॉक नहीं होते।
लिंक सुरक्षा
- WebSocket पर केवल सत्यापित पते अनुमत हैं: wss:// — केवल gorkycad.pro होस्ट और उसके सबडोमेन; ws:// — स्थानीय विकास के लिए केवल localhost और 127.0.0.1 (जैसे ws://localhost:3001/collab)। बाकी (http/https, पराए होस्ट, कचरा) अस्वीकार किया जाता है।
- सहमति संवाद इस सूची को कभी नहीं बढ़ाता: उपयोगकर्ता की पुष्टि केवल उसी पते पर काम करती है जो पहले से अनुमत है।
- सहमति प्रति टैब याद रखी जाती है (sessionStorage, कुंजी gorkycad:collab-consent) — नए टैब में फिर पूछा जाएगा। स्टोरेज तक पहुँच के बिना निजी मोड में संवाद दोहरा सकता है।
- स्थानीय विकास के लिए कनेक्ट करने से पहले पता स्थानीय सर्वर पर बदल दिया जाता है (डिफ़ॉल्ट पोर्ट 3001)।
सामान्य गलतियाँ
- लिंक या आमंत्रण बनाते समय “प्रोजेक्ट खुला नहीं है” — पहले प्रोजेक्ट खोलें, फिर शेयर करें।
- लिंक कनेक्ट नहीं होता और सहमति संवाद नहीं दिखता — पता जाँच में अस्वीकृत हो गया (पराया होस्ट या wss के बजाय http/https)। जाँचें कि लिंक gorkycad.pro पर जाता है।
- सहकर्मी के कर्सर और बदलाव नहीं दिखते — कनेक्शन अभी बना नहीं या टूट गया; ऑटो-रीकनेक्ट की प्रतीक्षा करें, नेटवर्क जाँचें।
- टिप्पणी नहीं दिखती — स्थिति फ़िल्टर (खुला/हल हुआ) और एलिमेंट से जुड़ाव जाँचें।
सीमाएँ
- लाइव सिंक के लिए ऑनलाइन होना ज़रूरी है: सहयोग सर्वर से WebSocket कनेक्शन।
- co-editor भूमिका के बिना अतिथि मॉडल संपादित नहीं कर सकता (viewer — केवल देखना, checker — देखना और टिप्पणी)।
- लिंक की समाप्ति अवधि हो सकती है; समाप्त लिंक कनेक्ट नहीं करता।
यह भी देखें
अक्सर पूछे जाने वाले प्रश्न
viewer, checker और co-editor भूमिकाओं में क्या अंतर है?
Viewer केवल प्रोजेक्ट देखता है, checker देखता है और टिप्पणी छोड़ता है, co-editor मॉडल को साथ में संपादित करता है।
सहकर्मी ने लिंक खोला, पर मुझे वह नहीं दिखता। क्या करें?
जाँचें कि उसने सहमति संवाद की पुष्टि की, लिंक समाप्त नहीं हुआ, और कनेक्शन बना है (टूटने पर क्लाइंट कुछ सेकंड में खुद फिर जुड़ जाता है)।
एक ही ऑब्जेक्ट को एक साथ संपादित करने पर क्या होगा?
CRDT नियम लागू होता है: टाइमस्टैम्प के अनुसार नया ऑपरेशन जीतता है, दीवारों और रूट की ज्यामिति अतिरिक्त रूप से resolver संभालता है, डेटा चुपचाप नष्ट नहीं होता।
ईमेल से मिला लिंक खोलना सुरक्षित है?
क्लाइंट केवल gorkycad.pro (wss) या localhost (ws, विकास) से जुड़ता है। पराए सर्वर का लिंक संवाद दिखाने से पहले अस्वीकार कर दिया जाता है, पराया होस्ट कभी इंटरफ़ेस में नहीं डाला जाता।