Table of Contents
لماذا (ويرتك) و(جافاسكريبت) هما مثاليان للتحرير التعاوني
وقد أصبح بناء محرر نصوص تعاوني في الوقت الحقيقي تحدياً بارزاً للمطورين الذين يسعون إلى دفع حدود ما يمكن للمصفوفين أن يفعلوه، وفي حين أن العديد من الحلول تعتمد على الخواديم المركزية لإعادة تغييرها، فإن الشبكة العالمية للاتصالات السلكية واللاسلكية (Web Real-Time Communication) توفر بديلاً مقنعاً عن طريق تمكين الدول الحديثة من الاتصال المباشر بين الأقران، وهذا النهج يقلل من المرونة، ويخفض تكاليف الخواديم، ويعطي المستعملين إطاراً متزامناً متزامناً.
وفي هذا الدليل، ستتعلمون كيف تصممون محررا تعاونيا باستخدام قنوات بيانات الشبكة العالمية لشبكة الإنترنت، وتنفذون التحولات التشغيلية لحل النزاعات، وتدمجون سطحا غنيا لتحرير النصوص، وستكون النتيجة النهائية أداة لقراءة الإنتاج يمكن للمستعملين المتعددين أن يحرروها في آن واحد مع ما يقرب من صفر.
Understanding the Core Technologies
WebRTC in Depth
(ب) شركة " ويرتك " (WebRTC) هي مجموعة من المؤشرات التي تمكن المروجين من تبادل البيانات في الوقت الحقيقي دون خواديم وسيطة، وهي تتألف من ثلاثة عناصر رئيسية هي: MediaStream ، وهي بيانات محررة في إطار " SFLT:1]، وهي تعرض على هيئة تحرير " St.
ومن المفاهيم الخاطئة المشتركة أن شركة ويب تيك تحتاج إلى بنية أساسية معقدة لخواديم الحاسوب، وفي الواقع، تحتاج فقط إلى آلية لافتة للوزن من أجل تبادل وصفات الدورة ومرشحي المعهد، وعندما يحصل الأقران على تلك التفاصيل، فإنها تتصل مباشرة، وهذا يبسط بشكل كبير التوسع لأن خادمك لا يعالج سوى المصافحة الأولية، وليس حركة التحرير الجارية، وللاطلاع على مزيد من الغطس في تحديد موقع الشبكة العالمية (WT):
جافا سكيربت) كـ (أوركستر)))
ويعالج جافاسكريب كل شيء من استخلاص مدخلات المستخدمين لإدارة حالة الوثيقة، وستحتاجون إلى تنفيذ المستمعين للأحداث الرئيسية (الحد الأقصى، والمدخلات، والمعكر) وترجمتها إلى عمليات منظمة، ثم يتم تسليحها وإرسالها عبر قناة البيانات، أما اللغة #8217، وحدث غير مقفل، فهي تعمل بشكل جيد هنا بصفة خاصة لأنها يمكن أن تتساءل عن مسارات الدخول دون أن تحجبها.
إنشاء اتحاد على الإنترنت
"السيرفر المُشغّل"
وعلى الرغم من أن مركز البحوث والتدريب على الإنترنت هو من النظراء إلى الآخرين، فإن على الأقران أن يكتشفوا بعضهم بعضاً في البداية، ويتم ذلك عن طريق جهاز إرسال الإشارات يمكن أن يُبنى بأجهزة " نودج " و " ويب سوكيت " ، وخدمة الإشارات مسؤولة عن تبادل ثلاثة أنواع من الرسائل: وصف الجلسات (العرض والإجابات) ومرشحي المؤتمر الدولي المعني بالإحصاءات، وهنا يوجد تدفق ضئيل:
- ويخلق المستخدم ألف حلقــة RTCPeer ويولد عرضا.
- ويرسل العرض إلى خادم الإشارة الذي يحيله إلى المستعمل باء.
- المستعمل (ب) يتلقى العرض ويخلق جواباً ويعيده
- وخلال هذه العملية، يتبادل الطرفان المرشحين للشبكة الدولية لاستكشاف أفضل مسار للشبكة.
وبمجرد إتمام التبادل، يمكن للأقران فتح قنوات البيانات، ويمكنكم أن تجدوا تنفيذ مرجعي في مستودع () AppRTC GitHub repository .
إنشاء قنوات البيانات
بعد إنشاء وحدة التحكم في الـ(إم تي بي سي) ستصنع قناة بيانات مع (الداتا شانل) من أجل محرر تعاوني، تريد توصيلة موثوقة، وهذا هو أسلوب التقصير، والرمز يبدو كذلك:
const dataChannel = peerConnection.createDataChannel('collabEditor', {
ordered: true
});
اسمعوا عن " البرمجيات " من الجهة النائية لتلقي إشارة القناة، وبمجرد أن يكون لدى كلا الجانبين مقبض على قناة البيانات، يمكنكم إرسال حمولات من طراز يوكون تمثل العناوين، وينبغي أن تتضمن كل حمولة هوية فريدة من نوعها من هوية المستخدم، وزمن، ونوع العمليات (يعني ذلك، أو حذف، أو تغيير الشكل).
تنفيذ محرر النصوص
اختيار وجه المحررين اليمينيين
The simplest approach is to use a `
وبالنسبة لهذا المشروع، سنستخدم كويل لأنه يستخلص تعقيدات من حيث المضمون بينما لا يزال يعطينا إمكانية الوصول إلى شكل دلتا الخام، وهو أمر سهل التسلسل والإرسال.
Capturing Edits and Sending Changes
(كويل) يُحدث " تغييراً " كلما تغيرت الوثيقة، يمكنك الاستماع إلى هذا الحدث وإرسال دلتا إلى جميع الأقران المُرتبطين:
quill.on('text-change', function(delta, oldDelta, source) {
if (source === 'user') {
dataChannel.send(JSON.stringify(delta));
}
});
ويكفل " فحص المصدر " أن تبثوا فقط التغييرات التي يقوم بها المستخدم المحلي، وليس التغييرات التي تم تطبيقها عن بعد، وهذا يحول دون وجود حلقات نهائية حيث يؤدي التحرير القادم إلى تحرير آخر بعيد المنال.
معالجة التواؤم والصراعات
التحولات التشغيلية
وعندما يقوم مستعملان بتحرير الوثيقة نفسها في وقت واحد، فإن النزاعات أمر لا مفر منه، فعلى سبيل المثال، يدرج المستخدم ألف طابعا في الموقع 5 بينما يحذف المستخدم باء الموقف 3، وبدون استراتيجية لحل، فإن الوثيقة النهائية ستنفصل، فالتحويلات التشغيلية هي خوارزمية ثبتت صلاحيتها وتحافظ على اتساق الوثائق عن طريق تحويل العمليات ضد بعضها البعض.
(ب) تنفيذ نظام " توت " من الصفر معقد، بل النظر في استخدام مكتبة مثل ot.js] أو منطق التحول القائم في بروسيمير، وتعالج هذه المكتبات رفعاً ثقيلاً من الرياضيات حتى تتمكن من التركيز على التكامل.
CRDTs as an Alternative
(ج) إن أنواع البيانات المكررة الخالية من النزاعات هي نهج آخر حظي بالشعبية، وعلى عكس ما حصل عليه المركز أو نظام العمليات، لا يتطلب كل من الأقران نسخة محلية ويطابق الاختلافات تلقائياً.
والخيار بين OT وCRDT يعتمد على حالة استخدامك، وعادة ما يكون للذاكرة العامة أقل حجماً ويعمل جيداً على إعداد وثائق فقط في شكل نصوص، وتتناسب أجهزة التلقيم المبسّطة بشكل أفضل مع هياكل البيانات المعقدة والسيناريوهات التحريرية الخارجية.
الصيد و التثبيت
وحتى مع حل النزاعات بشكل مثالي، فإن إرسال كل مفترق مفاتيح على الشبكة يخلق حركة غير ضرورية ويمكن أن يتغلب على الأقران، وينفذ آلية للدفع تجمع الطبقات لفترة قصيرة (50-100 متر) ويرسلها كعملية واحدة، وهذا يقلل من النفقات العامة دون التضحية بالشعور في الوقت الحقيقي، ويمكنك استخدام رد فعل بسيط على حدث " تغيير المعلومات " :
let batch = [];
quill.on('text-change', function(delta) {
batch.push(delta);
clearTimeout(batchTimer);
batchTimer = setTimeout(() => {
dataChannel.send(JSON.stringify(batch));
batch = [];
}, 50);
});
الهندسة المعمارية للمسجد والقابلية للثقة
إدارة الروابط بين الأقران
وإذا انضم أكثر من اثنين من المستعملين إلى الوثيقة نفسها، فإنكم تواجهون سيناريو شبكة مشرقة يجب أن يفتح كل من الأقران اتصالا مع كل من الأقران الآخرين، وهذا يضعف لأن عدد الاتصالات ينمو ربعيا مع عدد المشاركين، أما بالنسبة للدورات التي تضم أكثر من 5 إلى 6 مستخدمين، فينظرون في استخدام وحدة مختارة للتجهيز أو وحدة لمراقبة متعددة النقاط لإعادة توزيع البيانات عن طريق جهاز البث الحاسوبي.
الدولة
إن كان المستخدم يراجع الصفحة، يفقد كل ما لديه من صلة ويعود إلى حالته الأولية، ولمنع فقدان البيانات، تحتاج إلى طبقة ثبات جانب الخادم، وتخزن الوثيقة في قاعدة بيانات مثل قاعدة بيانات البريد أو ريدز بعد كل دفعة من الإصدارات، وعندما ينضم مستعمل جديد، فإنها تشتري الدولة الحالية من الخادم قبل الاتصال.
اعتبارات الأمن والخصوصية
قنوات البيانات المشفرة
(و) قنوات بيانات شركة (ويرتك) مشفوعة تلقائياً بـ (ديتغرام) (جهاز أمن النقل) وهذا يعني أن محتوى مبيدك آمن من التنصت حتى عندما يسافر عبر هوايات شبكة مجهولة، غير أن قناة الإشارة لا تُشفر بالفشل، لذا يجب أن تخدمها على جهاز تحديد المواقع وجهاز رصد المكالمات الهاتفية (WebSockets Secure).
مراقبة التوثيق والوصول
فقط لأن أحد النظراء يمكن أن يتواصل لا يعني أنه ينبغي أن يكون له الوصول إلى الموقع، وتنفيذ نظام للتوثيق القائم على التفكك، حيث يحصل المستعملون على مركب موقع من خادمكم قبل أن يتمكنوا من إقامة اتصال بشبكة ويب تريك، وينبغي أن يتضمن هذا الرمز الموقع الشبكي: 817 1؛ ودور (محرر، ومشاهد، ومرئي) والوثيقة التي يسمح لهم بالوصول إليها، ويقيّم هذا الأمر على كل من وسائل التحويل.
منع الهجمات بالحقن
إذا استخدمتم مستعملين مخادعين قابلين للتداول، يمكن أن يحقنوا نظام HTML التعسفي، بما في ذلك النصوص، وحتى مع محرر مُقَرَّف مثل كيل، يجب أن تصادقوا على جميع الدلتاسات القادمة في نهاية الإستلام، وشكل الكويدو 817، وشكل الدلتا صارم، ولكن يمكنكم إضافة خطوة إضافية للتخزين تزيل أي سمات غير متوقعة، ولا تثقوا في مدخلات المستخدمين حتى من أقرانكم.
الاختبارات والتداول
محاكاة المستعملين المتعددين
ويحتاج اختبار محرر تعاوني إلى حالتين على الأقل من حالات المصفوفين، واستخدام نوافذ أو ملامح مختلفة للبروزر لتحفيز مستخدمين منفصلين، كما أن أدوات مثل BrowserStack تتيح لك اختبار مختلف المروجين والأجهزة في آن واحد، وإيلاء اهتمام خاص للحالات الحادة مثل المفاتيح المتعاقبة السريعة، والماضن الكبيرة في آن واحد، والشبكات.
رصد قناة البيانات
ويمكن أن تنخفض قنوات بيانات شبكة ويب تيرتش بسبب تغيرات الشبكة أو انقطاعات زمنية عن طريق تبادل المعلومات، وتنفيذ آلية لضرب القلب ترسل رسالة صغيرة " للطباعة " كل 5 ثوان، وإذا لم ترد أي استجابة في غضون 10 ثوان، يفترض أن الصلة قد ماتت ومحاولة إعادة إنشائها.
تحقيق الاستخدام الأمثل للأداء
الضغط
إن المحررات المدرسية صغيرة، ولكن عندما يقوم العديد من المستخدمين بالتحرير، يمكن أن يضيف حجم الرسائل، ويمكن أن يضغط على قناة البيانات إذا دعمتها مكتبتك، كما يمكنك الضغط على حمولة " يوون " على طبقة التطبيقات باستخدام مكتبة مثل " باكو " (زليب في جافاسكريبت) مما يقلل من استهلاك الترددات إلى 80 في المائة لأنماط الطب المكررة.
Snchronation Selective
ولا يلزم إرسال كل تحرير إلى كل من الأقران، مثلاً عندما يكون نوع من المستخدمين سريعاً، فإن الدولة الأخيرة بعد مسائل رئيسية، ليس كل طابع وسيط، تستخدم آلية للكشف عن العبث: إذا كان المستخدم يرسم بشكل نشط، يوقف التغييرات ويرسل فقط دلتا موحداً عندما يتوقف، وهذا يقلل بشدة من عدد الرسائل ويحافظ على خبرة سلسة في التحرير.
كسولة
وإذا أصبحت الوثيقة كبيرة (مئات الصفحات)، فإن جعل المحتوى الكامل لكل نسخة من النسخة الواردة يمكن أن يسبب غرقا أو تمهيدا افتراضيا بحيث لا يعاد تقديم الجزء المرئي من الوثيقة إلا، وهذا أمر مهم بصفة خاصة بالنسبة للأجهزة المحمولة ذات القدرة المحدودة على التجهيز.
النشر والارتقاء بالإنتاج
اختيار سيرفر
For production, you need a robust signalling server that can handle thousands of concurrent connections. Node.js with socket.io is a popular choice because of its scalability and built-in fallback mechanisms. If you prefer a managed solution, consider services like Stream or
اختبارات مع الشبكات الحقيقية
ويخفي الاختبار المحلي عناوين الشبكة وفقدان الحزم، وينشر محررك إلى بيئة متنقلة ويختبر مع أقران في قارات مختلفة، ويستخدم أدوات مثل ويريشارك لتحليل حركة المرور على شبكة الإنترنت وتحديد الاختناقات، ويولي الاهتمام لعملية اختيار المرشحين في إطار المؤتمر الدولي المعني بالبيئة والتنمية؛ وقد يأخذ بعض الأقران طرقا طويلة بسبب سوء الثقة في نظام STUN/
الرصد والتعبئة
(د) إضافة تسجيل منظم لجميع أحداث لجنة استعراض ورصد البيئة: إحداث تغييرات في الدولة، وفتح قنوات البيانات/عمليات التحرير، واستخدام خدمة مركزية لقطع الأخشاب مثل Datadog] أو ]Loggly لتجميع قطع الأشجار من جميع الأقران، وهذا يساعد على تحديد القضايا التي تسقط في الوقت الحقيقي.
خاتمة
بناء محرر رسائل تعاوني في الوقت الحقيقي مع جافاسكريبت وشركة ويب ترانس (WebRTC) هو مسعى مكافئ يوسع فهمك للتواصل الشبكي وإدارة الدولة والأداء في مجال النقل المتعدد الوسائط، ويمكنك، عن طريق الاستفادة من قوة الاتصالات بين الأقران، أن تخلق تجربة تحريرية تشعر بأنها فورية ومتطورة بدون بنية أساسية للخواديم مكلفة، والعناصر الرئيسية هي آلية موثوقة للإشارة، وسطح المحرر المهيكلّد مثل كوير أو بروسير
وإذ تتقدمون، اعتبروا المبادلات بين بنية مختلطة ومختلطة تماماً، وبالنسبة لفرق صغيرة، فإن الشبكة العالمية للكيمياء التي تحتوي على خادم إشارات خفيفة مثالية، وبالنسبة للنشرات الأكبر، فإن إضافة طبقة خواديم للثبات والإحالة الانتقائية تعطيكم السيطرة التي تحتاجونها، وأي طريق تختارونه، فإن المبادئ المبينة هنا ستكون بمثابة أساس متين لبناء أدوات تعاونية لقراءة الإنتاج.