أولاً، أنا أدرك تماماً إعدادات Discourse الموصى بها، ولكن للأسف لا أستطيع التحكم فيها حالياً.
انتقل الآن إلى المشكلة. كان لدى عميل واجهة أمامية مخصصة مبنية باستخدام React تستخدم Discourse كخلفية للتطبيق. ورثت المشروع وهو في حالة سيئة، وقد حاول المطورون السابقون دمج ActionCable في Discourse بشكل غير مناسب. وبما أن Discourse يستخدم بالفعل Message bus للميزات الفورية، اعتقدت أنه يجب علينا محاولة استخدامه.
نجحنا في ذلك محلياً. فـ Message bus يعمل ‘بشكل سلس’، وتمكنا من الاشتراك في جميع قنوات Message bus الافتراضية في Discourse بالإضافة إلى إنشاء قنوات خاصة بنا.
المشكلة التي نواجهها تظهر في بيئاتنا البعيدة. نحن ننشر على مثيلات AWS EC2 خلف موازن حمل ALB، وقد قمنا ببناء البيئة بأنفسنا. كنت أود جداً اتباع نهج Docker، لكن العميل ببساطة لم يكن لديه الميزانية اللازمة لإنفاق الوقت على تغيير الأمور في هذه المرحلة من المشروع ![]()
العرض الرئيسي هو أن Message bus يعاني من تأخير رهيب. لا شيء حقيقيًا فوريًا، لكننا نعلم أن إعدادات Message bus سليمة لأنها تعمل بشكل ممتاز محلياً، لذا يجب أن تكون المشكلة في شيء آخر.
أنا أستخدم إعدادات nginx الافتراضية لـ Discourse تقريباً. اعتقدت في البداية أن هذه هي المشكلة، حيث كان إعداد nginx الخاص بـ Message bus مفقوداً، ولكن بعد إضافته، لم يبدو أنه حل المشكلات التي نواجهها.
بعد فحص تبويب الشبكة في Chrome، من الواضح وجود مشكلة لأن طلباتنا /poll تنتظر لمدة 25 ثانية ثم تقوم بتحميل المحتوى خلال أجزاء من الثانية. وأنا أعلم أنه يجب أن يكون العكس، كما يحدث عندما أعمل محلياً أو كما يحدث على meta.
أدرك أن هذه قد تكون أيضاً مشكلة تتعلق بـ AWS ALB، لكنني حرفياً لا أعرف من أين أبدأ. كنت أتساءل عما إذا كان @sam لديه أي فكرة عن ماهية المشكلة، أو قادر على توجيهي في الاتجاه الصحيح.
كما هو معتاد، أي مساعدة كانت وستكون موضع تقدير كبير!
