Notificaciones de bus de mensajes con Long Polling desde aplicación React

Hola a todos,

Actualmente estoy construyendo un frontend en React para un servidor Discourse headless.

Estoy en proceso de implementar el contador de notificaciones, similar al que aparece sobre el avatar del usuario aquí. Me gustaría que se actualice en tiempo casi real usando long polling a través del message_bus de Discourse.

He visto el archivo message-bus.js, pero es muy verboso y está desactualizado para una aplicación moderna. No quiero depender de jQuery ni de un objeto global cuando deberíamos integrarlo como parte de la aplicación React.

También he visto en /initializers/subscribe-user-notifications.js.es6 que nos suscribimos a /notification/userid, pero no puedo encontrar documentación sobre los canales disponibles para suscribirse ni sobre las respuestas que se reciben.

Busco orientación sobre la mejor práctica para implementar la suscripción al message bus en una aplicación JavaScript moderna.

¡Gracias! :+1:

2 Me gusta

Discourse es una aplicación moderna de JavaScript :stuck_out_tongue:

La mejor manera es utilizar la biblioteca message-bus. Actualmente depende de JQuery, pero si deseas enviar un pull request para eliminar esa dependencia, estoy seguro de que sería considerado.

Messagebus está destinado únicamente a ser utilizado dentro de Discourse; no es realmente una API “pública”. La mejor fuente de información serán los archivos JavaScript en la base de código, que ya encontraste :+1:

Una pequeña corrección :slight_smile:

MessageBus intentará primero usar jQuery y, si no está disponible, recurrirá a una versión de XMLHttpRequest puro contenida en el archivo message-bus-ajax.js. message-bus-ajax.js debe cargarse después de message-bus.js para que se utilice. Puedes anular esta opción con una función que implemente una solicitud ajax por otros medios.

3 Me gusta

Gracias @david, @sam, no quise sugerir que Discourse no es una aplicación moderna; obviamente lo es. Creo que encontré message-bus.js primero y me confundí sobre si era realmente la mejor práctica. Funciona bien, así que no es un problema.

¡Gracias!

3 Me gusta

El núcleo de Discourse utiliza exactamente el mismo archivo, es el archivo correcto ™

1 me gusta