Notifiche del bus di messaggi Long Polling da applicazione React

Ciao a tutti,

Sto attualmente sviluppando un frontend React per un server Discourse headless.

Sto implementando il contatore delle notifiche, simile a quello presente sopra l’avatar dell’utente qui. Vorrei che venisse aggiornato in tempo quasi reale utilizzando il long polling tramite message_bus di Discourse.

Ho visto il file message-bus.js, ma è molto verboso e non aggiornato per un’applicazione moderna. Non vorrei dover includere jQuery e un oggetto globale quando dovremmo integrare questa funzionalità direttamente nell’applicazione React.

Ho anche notato in /initializers/subscribe-user-notifications.js.es6 che ci si iscrive a /notification/userid, ma non riesco a trovare documentazione sui canali disponibili per l’iscrizione o sui formati delle risposte.

Sto cercando indicazioni sulla modalità migliore e più corretta per implementare l’iscrizione al message bus in un’applicazione JavaScript moderna.

Grazie! :+1:

Discourse è un’applicazione JavaScript moderna :stuck_out_tongue:

Il modo migliore è utilizzare la libreria message-bus. Attualmente dipende da JQuery, ma se desideri inviare una pull request per rimuovere tale dipendenza, sono sicuro che verrebbe presa in considerazione.

Messagebus è destinato esclusivamente all’uso all’interno di Discourse; non è davvero un’API “pubblica”. La migliore fonte di informazioni saranno i file JavaScript nel codice sorgente, che hai già individuato :+1:

Minor correction :slight_smile:

MessageBus will first attempt to use jQuery and then fallback to a plain XMLHttpRequest version that’s contained in the message-bus-ajax.js file. message-bus-ajax.js must be loaded after message-bus.js for it to be used. You may override this option with a function that implements an ajax request by some other means

Grazie @david, @sam, non intendevo suggerire che Discourse non sia un’applicazione moderna - ovviamente lo è. Penso di aver trovato per primo message-bus.js e sono rimasto confuso sul fatto che fosse davvero la migliore pratica. Funziona correttamente, quindi non è un problema.

Grazie!

Il core di Discourse utilizza esattamente lo stesso file, è il file giusto ™