منع انتهاء جلسات تحرير التعليمات البرمجية بعد 10 دقائق

إذا انقطع اتصال مستند CODE بشكل متكرر كل 10 دقائق تقريبًا، فافحص مسار WebSocket عبر كل خادم وكيل عكسي أو موازن تحميل أولًا. يُعدّ انقطاع الاتصال لمدة 600 ثانية مؤشرًا شائعًا على وجود مشكلة في الإعدادات، ولكن التوقيت وحده لا يُثبت مسؤولية الخادم الوكيل؛ لذا تحقق من المكون الذي يُغلق الاتصال قبل تغيير الإعدادات. في معظم عمليات النشر، يتمثل الحل العملي في الإبقاء على ترقية Collabora WebSocket وتعيين مهلات القراءة والإرسال للخادم الوكيل لتكون أطول من أطول جلسة تحرير متوقعة.

أولاً، تأكد من مكان حدوث الانقطاع

يستخدم Collabora Online اتصالاً عبر المتصفح بخادم CODE، بينما يعتمد تكامل المستندات أيضًا على اتصال WOPI مع المضيف، مثل Nextcloud. توضح إرشادات Collabora الخاصة بالخادم الوكيل العكسي وأمثلة Office الحالية في Nextcloud مسار WebSocket منفصل لجلسات المستندات. في حال غياب هذا المسار، أو إرساله إلى خادم خاطئ، أو خضوعه لمهلة انتهاء الخمول، قد يفقد المحرر اتصاله المباشر بينما تظل الصفحة نفسها متاحة.

هذا شرط معماري مُثبت. لا يعني هذا أن كل عطل يستمر لعشر دقائق له نفس السبب: فقد يفرض مُوازن أحمال السحابة، أو وحدة تحكم الدخول، أو جدار الحماية، أو شبكة VPN، أو أي خادم وكيل آخر، حدوده الخاصة. اعتبر الفترة الزمنية المتكررة مؤشرًا، ثم تحقق من سجلات الوصول والأخطاء لحظة حدوث العطل.

  1. سجل الوقت المحدد لانقطاع الجلسة وما إذا كان ذلك يحدث أثناء الكتابة النشطة أو فقط أثناء خمول المستند.
  2. في أدوات مطوري المتصفح، افتح لوحة الشبكة، وقم بتصفية النتائج حسب "WS"، وافحص الاتصال الذي ينتهي مساره بـ "<" /ws. /cool/لاحظ حالته، وأغلق الكود إذا أبلغ المتصفح عن حالة.
  3. في نفس التوقيت، تحقق من سجلات الخادم الوكيل العكسي أو سجلات الدخول، وسجلات خادم CODE، وسجلات مضيف WOPI. ابحث عن أي انقطاع في اتصال الخادم الوكيل، أو إعادة ضبط المصدر، أو إغلاق غير طبيعي لـ WebSocket، أو خطأ في WOPI. تختلف صياغة السجلات باختلاف المنتج والإصدار، لذا لا تفترض أن رسالة واحدة عامة.

إذا انتهى اتصال WebSocket عند نفس عتبة الـ 600 ثانية المُحددة، فقم بإصلاح الخادم الوكيل أو الوسيط المسؤول عن هذه العتبة. أما إذا انتهى عند فترة زمنية أخرى، أو أظهرت السجلات خطأً في WOPI أو خطأً في الخادم، فاتبع هذه الأدلة. توصي وثائق استكشاف الأخطاء وإصلاحها في Nextcloud تحديدًا بفحص الاتصال في كلا الاتجاهين ومراجعة سجلات كل من Nextcloud وCollabora.

أبقِ اتصال WebSocket مفتوحًا عبر الخادم الوكيل.

قبل تعديل ملف البروكسي، حدد المضيف الظاهري النشط وبروتوكول المصدر الفعلي ومنفذ CODE. أنشئ نسخة احتياطية من الإعدادات وتحقق من صحة الصيغة قبل إعادة التحميل. يوضح المثال أدناه سلوك WebSocket المطلوب لبروكسي عكسي NGINX؛ وهو ليس مضيفًا ظاهريًا كاملًا لـ Collabora. ادمجه في الإعدادات الرسمية لنشرك، مع الحفاظ على كتل الموقع الأخرى، وإعدادات TLS، ومعالجة URI، وقواعد الأمان.

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

location ~ ^/cool/(.*)/ws$ {
    proxy_pass https://127.0.0.1:9980/cool/$1/ws;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_read_timeout 36000s;
    proxy_send_timeout 36000s;
}

تسمح رؤوس UpgradeHTTP Connectionهذه بتحويل طلب HTTP إلى WebSocket. تمنع حدود القراءة والإرسال الأطول هذا الخادم الوكيل من إغلاق اتصال صامت بعد فترة افتراضية قصيرة؛ فهي ليست أمرًا لإبقاء الجلسة مفتوحة إلى الأبد. اضبط عنوان المصدر والتحقق من TLS ليتوافق مع إعداداتك، ولا تعطل عمليات التحقق من الشهادات لمجرد تشغيل المثال.

تُعدّ أمثلة بروكسي Collabora الرسمية المرجع الأمثل لإعدادات التوجيه الكاملة والمناسبة لكل إصدار. تتضمن إرشاداتها الحالية مهلات بروكسي طويلة؛ كما يحتوي مثال Docker الحالي في Nextcloud على /cool/(.*)/wsتعيين WebSocket مخصص. استخدم هذه الأمثلة الكاملة بدلاً من استبدال مضيفك الافتراضي بالكامل بهذا المقتطف الصغير.

بالنسبة لـ NGINX، قم بتشغيل nginx -tالاختبار وإعادة تحميله فقط بعد نجاحه. أما بالنسبة لـ Apache، فاستخدم اختبار التكوين الخاص به قبل إعادة التحميل. إذا كان CODE يعمل خلف بوابة Kubernetes أو موازن تحميل سحابي، فلن يؤدي تغيير NGINX على مضيف CODE إلى حل مشكلة مهلة الاتصال الأقصر عند بوابة الدخول أو حافة الموفر؛ لذا، قم بتحديث المكون الذي تحدده السجلات.

تحقق من كل قفزة في الشبكة، وليس فقط من الكود.

قد يمرّ تدفق بيانات WebSocket عبر أكثر من وسيط: المتصفح، وشبكة توصيل المحتوى (CDN)، وجدار الحماية، وموازن الأحمال الخارجي، ونقطة الدخول، وخادم الوكيل، ثمّ الكود. لا يمكن لمهلة طويلة في طبقة ما أن تتجاوز مهلة أقصر في الطبقة التالية. قارن مهلة الخمول أو مهلة الاتصال لكل طبقة، واجعل حدّ مسار WebSocket أطول من فترة التحرير المتوقعة في حالة الخمول، ضمن حدود وسياسة تلك المنصة.

لا تخلط بين إعداد "إلغاء تحميل المستند في حالة الخمول" ومهلة الشبكة للخادم الوكيل. يتحكم الإعداد الأول في وقت إلغاء تحميل عملية مستند غير مستخدمة، ولا يُصلح اتصال WebSocket الذي أغلقه وسيط بالفعل. وبالمثل، فإن تحديد مهلة طويلة جدًا لا يُصلح مسار ترقية خاطئ، أو حركة مرور محظورة، أو تكوين HTTP/HTTPS غير متوافق، أو تعطل عملية CODE. بعد كل تغيير، تأكد من تغير وقت الإغلاق أو اختفاء السبب المُسجل؛ فهذا يُضيّق نطاق الطبقة المسؤولة دون إدخال تغييرات غير ذات صلة.

تأكد من أن متصفح المستخدم وخادم WOPI يمكنهما الوصول إلى خدمة CODE عبر HTTPS، وأن خدمة CODE قادرة على الوصول إلى خادم WOPI. بالنسبة لتكامل Nextcloud، يُوصي دليل استكشاف الأخطاء وإصلاحها بفحص نقاط النهاية العامة /hosting/capabilitiesمن /hosting/discoveryمتصفح باستخدام أداة معينة curl، ثم فحص نقطة نهاية حالة Nextcloud من خادم CODE. تُؤكد هذه الفحوصات إمكانية الوصول الأساسية، لكنها لا تُثبت وحدها استمرار اتصال WebSocket المُنشأ لمدة عشر دقائق.

تحقق من الإصلاح من خلال جلسة زمنية محددة

  1. أعد تحميل إعدادات الوكيل أو المدخل باستخدام خطوة التحقق المدعومة، ثم افتح جلسة مستند جديدة.
  2. أبقِ المستند مفتوحًا لفترة أطول من فترة الفشل السابقة. اختبره مرة أثناء التحرير، وإذا حدثت المشكلة المبلغ عنها أثناء عدم النشاط، فاختبره مرة أخرى عندما يكون المستند في وضع الخمول.
  3. تأكد من أن /cool/.../wsالاتصال لا يزال مفتوحًا في لوحة الشبكة بالمتصفح وأن المستند يستمر في الحفظ من خلال مضيف WOPI.
  4. راجع سجلات الفترة الزمنية نفسها. الاختبار الناجح يعني عدم ظهور أي انقطاع في اتصال الوكيل أو إغلاق غير متوقع لبروتوكول WebSocket، وأن التعديلات تبقى محفوظة بعد إعادة فتح المستند.

إذا استمر انقطاع الاتصال، فاستعد وقت الفشل المسجل وقارنه بسجلات كل نقطة اتصال. يشير إغلاق الاتصال بعد 600 ثانية عند نقطة الدخول إلى تلك النقطة؛ بينما يشير وقت إغلاق مختلف أو خطأ من جانب الخادم إلى مكان آخر. لا يمكن تحديد السبب الدقيق من خلال "10 دقائق" فقط، وتختلف أسماء مهلات الانتظار وقيمها الافتراضية بين منتجات وإصدارات الوكيل. احتفظ بنسخة موثقة من إعدادات التشغيل مع إصدار CODE ومنتج الوكيل حتى يمكن التحقق من التحديثات المستقبلية مقابل الأمثلة الرسمية الحالية.

اترك تعليقاً

منع انتهاء جلسات تحرير التعليمات البرمجية بعد 10 دقائق

منع انتهاء جلسات تحرير التعليمات البرمجية بعد 10 دقائق

تتبع انقطاع اتصال CODE لمدة 10 دقائق إلى الوكيل أو موازن التحميل أو مسار WebSocket، ثم قم بتصحيح المهلة الزمنية وتحقق من بقاء الجلسة متصلة.

انشر كود Collabora على Kubernetes باستخدام Helm

انشر كود Collabora على Kubernetes باستخدام Helm

قم بتثبيت مخطط Collabora Helm الرسمي، وقم بتكوين الوصول إلى WOPI وتقارب الدخول، وتحقق من النشر دون أخطاء الإعداد الشائعة.

تتبع مستند Collabora فارغ إلى الطبقة المعيبة

تتبع مستند Collabora فارغ إلى الطبقة المعيبة

استخدم طلبات المتصفح وسجلات WOPI وفحوصات البروكسي المستهدفة لمعرفة سبب فتح Collabora لمستند فارغ - واختر حلاً يتناسب مع الأدلة.

تفعيل التدقيق الإملائي متعدد اللغات في Collabora Online (رمز)

تفعيل التدقيق الإملائي متعدد اللغات في Collabora Online (رمز)

قم بتكوين قواميس CODE Docker ووضع علامات على مقاطع المستندات بشكل صحيح حتى تتلقى اللغات الإنجليزية والفرنسية واللغات الأخرى المدعومة التدقيق الإملائي الصحيح.

اضبط مؤقت الخمول في Collabora لعرض المستندات النشطة

اضبط مؤقت الخمول في Collabora لعرض المستندات النشطة

قم بضبط عتبة عدم النشاط لكل عرض في coolwsd وميزها عن تعتيم علامات التبويب الخلفية، وإلغاء تحميل المستندات، والحفظ التلقائي، وانتهاء صلاحية تسجيل الدخول.

تعطيل عمليات التحقق من تحديثات كود Collabora والاتصالات غير المرغوب فيها

تعطيل عمليات التحقق من تحديثات كود Collabora والاتصالات غير المرغوب فيها

أوقف عمليات التحقق المجدولة لتحديثات التعليمات البرمجية، وراجع الخدمات البعيدة الاختيارية، واستخدم عناصر التحكم في الشبكة الصادرة دون تعطيل تحرير المستندات.

قم بربط Seafile و Collabora باستخدام عنوان URL الصحيح لـ WOPI

قم بربط Seafile و Collabora باستخدام عنوان URL الصحيح لـ WOPI

قم بتمكين تحرير المستندات بشكل آمن في Seafile عن طريق تكوين عنوان URL لاكتشاف Collabora و HTTPS والوصول إلى WOPI لنشرك.

استعادة النسخ واللصق بين تطبيقات Collabora وتطبيقات سطح المكتب

استعادة النسخ واللصق بين تطبيقات Collabora وتطبيقات سطح المكتب

اختبر حافظة النظام، واضبط أذونات المتصفح، وحدد متى يحتاج تكامل Collabora المضمن إلى تغيير سياسة iframe.

توفير خطوط مخصصة في Collabora CODE Docker

توفير خطوط مخصصة في Collabora CODE Docker

قم بتثبيت ملفات الخطوط في Docker ولوحة نظام Collabora بحيث تظهر الخطوط المخصصة في المحرر ويتم عرضها بشكل صحيح في المستندات.

استعادة إعدادات Collabora CODE دون فقدان تغييرات النشر

استعادة إعدادات Collabora CODE دون فقدان تغييرات النشر

قم بعمل نسخة احتياطية من ملف coolwsd.xml ومصادر النشر الخاصة به، واستعدها بأمان، وتحقق من الكود قبل أن يعود المستخدمون إلى التحرير.