إشعارات حافلة الرسائل عبر Long Polling من تطبيق React

مرحبًا بالجميع،

أقوم حاليًا ببناء واجهة أمامية باستخدام React لخدمة Discourse من نوع headless.

أنا في طور تنفيذ عداد الإشعارات، المشابه لذلك الموجود فوق صورة الملف الشخصي للمستخدم هنا. أود تحديث هذا العداد في الوقت الفعلي تقريبًا باستخدام long polling عبر message_bus في Discourse.

لقد راجعت ملف message-bus.js، لكنه يبدو مطولًا جدًا وغير محدث للتطبيقات الحديثة. لا أرغب في إضافة jQuery وكائن عالمي عندما يجب أن ننفذ ذلك كجزء من تطبيق React.

كما لاحظت في /initializers/subscribe-user-notifications.js.es6 أننا نشترك في /notification/userid، لكنني لم أتمكن من العثور على توثيق للقنوات المتاحة للاشتراك أو ما هي الاستجابات المتوقعة.

أبحث عن مساعدة لمعرفة أفضل طريقة لممارسة الاشتراك في message bus ضمن تطبيق جافا سكريبت حديث.

شكرًا لكم! :+1:

إن Discourse هو بالفعل تطبيق جافا سكريبت حديث :stuck_out_tongue:

أفضل طريقة هي استخدام مكتبة message-bus. حاليًا، تعتمد على JQuery، ولكن إذا رغبت في تقديم طلب سحب (pull request) لإزالة هذا الاعتماد، فإننا على يقين من أنه سيتم النظر فيه.

يُفترض استخدام Messagebus فقط داخل Discourse، وهو ليس حقًا “واجهة برمجة تطبيقات عامة”. أفضل مصدر للمعلومات سيكون ملفات جافا سكريبت في قاعدة الكود، والتي عثرت عليها بالفعل :+1:

تصحيح بسيط :slight_smile:

ستحاول MessageBus أولاً استخدام jQuery، ثم ستعود إلى نسخة XMLHttpRequest عادية موجودة في ملف message-bus-ajax.js. يجب تحميل message-bus-ajax.js بعد message-bus.js لكي يتم استخدامها. يمكنك تجاوز هذا الخيار باستخدام دالة تنفذ طلب Ajax بطريقة أخرى

شكرًا لك @david، @sam، لم أقصد أن أشير إلى أن Discourse ليس تطبيقًا حديثًا - بل هو بالتأكيد كذلك. أعتقد أنني وجدت message-bus.js أولاً، وكنت مرتبكًا بشأن ما إذا كانت تمثل بالفعل أفضل الممارسات. إنها تعمل بشكل صحيح، لذا فلا مشكلة.

شكرًا!

يستخدم جوهر Discourse نفس الملف بالضبط، إنه الملف الصحيح ™