Estou atualmente construindo um frontend em React para um servidor Discourse headless.
Estou no processo de implementar a contagem de notificações, semelhante à que aparece sobre o avatar do usuário aqui. Gostaria que isso fosse atualizado em tempo quase real usando long polling no message_bus do Discourse.
Já vi o arquivo message-bus.js, mas ele é muito verboso e desatualizado para uma aplicação moderna. Não quero realmente importar jQuery e um objeto global quando devemos fazer isso como parte da aplicação React.
Também vi em /initializers/subscribe-user-notifications.js.es6 que nos inscrevemos em /notification/userid, mas não consigo encontrar documentação sobre os canais disponíveis para inscrição ou quais são as respostas.
Estou procurando ajuda sobre a melhor maneira de implementar a inscrição no message bus em uma aplicação JavaScript moderna.
A melhor maneira é usar a biblioteca message-bus. Atualmente, ela depende do JQuery, mas se você quiser enviar um pull request para remover essa dependência, tenho certeza de que será considerada.
O Messagebus destina-se apenas a ser usado dentro do Discourse; não é realmente uma API “pública”. A melhor fonte de informações serão os arquivos JavaScript no código-fonte, que você já encontrou
O MessageBus tentará primeiro usar o jQuery e, em seguida, fará fallback para uma versão XMLHttpRequest pura que está contida no arquivo message-bus-ajax.js. O message-bus-ajax.js deve ser carregado após o message-bus.js para ser utilizado. Você pode substituir essa opção por uma função que implemente uma requisição AJAX por outros meios.
Obrigado, @david, @sam, não quis sugerir que o Discourse não é uma aplicação moderna - obviamente que é. Acredito que encontrei primeiro o message-bus.js e fiquei confuso se era realmente a melhor prática. Funciona bem, então não é um problema.