تحية! ليس لدينا أخبار جيدة للغاية: لقد ارتكبنا خطأ في نسخة الجوال ، مما قد يزعجك طوال العطلات.

جوهر المشكلة: يرسل الشخص تعليقًا إلى منشور ، ويرى ذلك عند تسجيل الدخول ويترك الصفحة ، ولكن إذا قمت بتحديث الصفحة ، فسيكون هذا التعليق بالفعل تحت اسم مستخدم مختلف. هذا يعمل فقط إذا كان المستخدمون في وقت واحد على صفحة واحدة وظيفة.
وفقًا لبياناتنا ، تم إرسال 774 تعليقًا من نسخة الجوال خلال عطلة نهاية الأسبوع. كل واحد منهم يمكن أن يعاني.
بعض التفاصيل الفنيةنستخدم مجموعة من VueJS + NodeJS (Express ، SSR).
يخدم NodeJS اتصالات متعددة في دفق واحد بشكل غير متزامن ، أي أنه يستخدم مثيل واحد لجميع العملاء. هذا يعني أن المتغيرات العامة تتم تهيئتها مرة واحدة فقط وتعيش ما دامت المثيل حية.
لذلك ، يجب أن تكون حذرًا للغاية في أمر تنفيذ middlewar'ov ، وكذلك تعريف وإعادة تعريف قيم المتغيرات (خاصة إذا كانت عالمية).
وهذا ما حدث لنا (هذا مثال على الكود):
global.foo = 'bar'; app.get('/main', (req, res, next) => { res.send(global.foo); }); app.get('/change', (req, res, next) => { global.foo = global.foo === 'bar' ? 'barbar': 'bar'; res.send(global.foo); });
ماذا سيعود الخادم؟
- العميل 1 على
/main
>>> 'شريط' - العميل 2 في
/change
>>> 'barbar' - العميل 1 مرة أخرى على
/main
>>> 'barbar'
المثال ، بالطبع ، مبسط إلى حد كبير ، ولكن المبدأ هو نفسه.
الآن كل شيء يعمل كما يجب. يرجى مسامحتك للإزعاج ، وإذا كنت متأثرًا بهذه المشكلة ، فيرجى الاتصال بنا من خلال نموذج الملاحظات .
نحن نبحث عن فرصة لإعادة التعليقات إلى أصحابها الشرعيين ، وسنخبرك بما جاء منها لاحقًا.