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.
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
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.