Notifications de bus de messages par long polling depuis une application React

Bonjour à tous,

Je suis actuellement en train de construire un frontend React pour un serveur Discourse headless.

Je suis en train de mettre en œuvre le compteur de notifications, similaire à celui qui apparaît au-dessus de l’avatar des utilisateurs ici. J’aimerais que celui-ci soit mis à jour en temps quasi réel via le message_bus de Discourse en utilisant le long polling.

J’ai consulté le fichier message-bus.js, mais il est très verbeux et obsolète pour une application moderne. Je ne souhaite pas vraiment introduire jQuery et un objet global alors que nous devrions intégrer cela directement dans l’application React.

J’ai également remarqué dans /initializers/subscribe-user-notifications.js.es6 que nous nous abonnons à /notification/userid, mais je n’arrive pas à trouver de documentation sur les canaux disponibles pour l’abonnement ni sur le format des réponses.

Je cherche des conseils sur la meilleure pratique pour implémenter l’abonnement au message bus dans une application JavaScript moderne.

Merci ! :+1:

2 « J'aime »

Discourse est une application JavaScript moderne :stuck_out_tongue:

La meilleure méthode consiste à utiliser la bibliothèque message-bus. Actuellement, elle dépend de JQuery, mais si vous souhaitez soumettre une demande de fusion pour supprimer cette dépendance, je suis certain qu’elle serait examinée.

Messagebus est uniquement destiné à être utilisé au sein de Discourse ; ce n’est pas vraiment une API « publique ». La meilleure source d’information sera les fichiers JavaScript du code source, que vous avez déjà trouvés :+1:

Petite correction :slight_smile:

MessageBus tentera d’abord d’utiliser jQuery, puis basculera vers une version en XMLHttpRequest brut contenue dans le fichier message-bus-ajax.js. message-bus-ajax.js doit être chargé après message-bus.js pour être utilisé. Vous pouvez remplacer cette option par une fonction qui implémente une requête AJAX par un autre moyen.

3 « J'aime »

Merci @david, @sam, je n’ai pas voulu suggérer que Discourse n’est pas une application moderne - il l’est évidemment. Je pense que j’ai trouvé message-bus.js en premier et j’étais confus quant à savoir si c’était vraiment la meilleure pratique. Cela fonctionne bien, donc ce n’est pas un problème.

Merci !

3 « J'aime »

Le cœur de Discourse utilise exactement le même fichier, c’est le bon fichier ™

1 « J'aime »