وصف المشكلة
كنت أقوم مؤخرًا بإعداد خدمة CDN جديدة وتكوين DISCOURSE_LONG_POLLING_BASE_URL في app.yml، لفصل خدمة الاستطلاع الطويل عن الخادم الأصلي.
ولكن ناقل الرسائل يستمر في إجراء طلبات إلى “/” بدلاً من احترام عنوان URL الأساسي للاستطلاع الطويل الذي تم تكوينه.
خطوات التكاثر
- قم بتكوين
DISCOURSE_LONG_POLLING_BASE_URLفيapp.ymlبعنوان URL مخصص لـ CDN. - أعد بناء وتشغيل Discourse.
- تحقق من أن الواجهة الأمامية تقرأ قيمة المتغير البيئي بشكل صحيح.
- راقب طلبات شبكة ناقل الرسائل في أدوات مطوري المتصفح.
بعض لقطات الشاشة
الواجهة الأمامية تقرأ الإعداد بشكل صحيح:
السلوك المتوقع
يجب أن يستخدم ناقل الرسائل إعداد long_polling_base_url الذي تم تكوينه لطلباته عندما يتم توفير الإعداد.
السلوك الفعلي
يستمر ناقل الرسائل في إجراء طلبات إلى “/” بغض النظر عن تكوين DISCOURSE_LONG_POLLING_BASE_URL.
السبب الجذري
المشكلة في app/assets/javascripts/discourse/app/instance-initializers/message-bus.js.
لم تقم منطق تعيين messageBus.baseUrl بمعالجة إعداد موقع long_polling_base_url بشكل صحيح، مما أدى إلى تعيينه افتراضيًا إلى “/” حتى عند تكوين عنوان URL مخصص.
الإصلاح
لقد حددت المشكلة وأصلحتها في تهيئة المثيل لناقل الرسائل. يضمن الإصلاح أنه عندما يتم تعيين siteSettings.long_polling_base_url ولا يساوي “/”، فإنه يقوم بتكوين عنوان URL الأساسي لناقل الرسائل بشكل صحيح.
التحقق
- تم التأكد من أن الواجهة الأمامية تقرأ المتغير البيئي بشكل صحيح.
- تم إصلاح منطق تهيئة ناقل الرسائل لاحترام الإعداد.
- جميع فحوصات التنسيق تمر.
- يستخدم ناقل الرسائل الآن بشكل صحيح عنوان URL الأساسي للاستطلاع الطويل الذي تم تكوينه.
تؤثر هذه المشكلة على أي تثبيت لـ Discourse يستخدم إعداد CDN مخصصًا مع الاستطلاع الطويل، مما يمنع الاستخدام السليم لـ CDN لطلبات ناقل الرسائل.
شكرًا لـ @David_Ghost، تفضل بزيارة مناقشتنا هنا:
