React 애플리케이션에서 Long Polling을 통한 메시지 버스 알림

여러분 안녕하세요,

현재 헤드리스 Discourse 서버용 React 프론트엔드를 구축하고 있습니다.

여기서 사용자 아바타 위에 표시되는 것과 유사한 알림 카운트를 구현하는 중입니다. Discourse의 message_bus를 통해 롱 폴링(long polling) 방식으로 거의 실시간으로 업데이트되도록 하고 싶습니다.

message-bus.js 파일을 확인해 봤는데, 현대적인 애플리케이션에는 너무 장황하고 구식입니다. React 애플리케이션의 일부로 처리해야 하는 상황에서 jQuery와 전역 객체를 가져오는 것은 별로 원하지 않습니다.

또한 /initializers/subscribe-user-notifications.js.es6에서 /notification/userid에 구독(subscribe)한다는 것을 확인했지만, 구독할 수 있는 채널이나 응답에 대한 문서를 찾을 수 없습니다.

현대적인 JavaScript 애플리케이션에서 메시지 버스에 구독하는 모범 사례에 대해 도움을 구합니다.

감사합니다! :+1:

Discourse 은/는 모던 자바스크립트 애플리케이션입니다 :stuck_out_tongue:

가장 좋은 방법은 message-bus 라이브러리를 사용하는 것입니다. 현재는 JQuery에 종속되어 있지만, 해당 종속성을 제거하는 pull request를 제출해 주신다면 검토해 볼 것입니다.

Messagebus는 Discourse 내부에서만 사용되도록 의도된 것으로, 사실상 ‘공개’ API가 아닙니다. 가장 좋은 정보원은 코드베이스 내의 자바스크립트 파일이며, 이미 찾으신 것으로 보입니다 :+1:

작은 수정입니다 :slight_smile:

MessageBus는 먼저 jQuery를 사용하려고 시도하고, 실패할 경우 message-bus-ajax.js 파일에 포함된 일반 XMLHttpRequest 버전으로 폴백합니다. message-bus-ajax.js는 message-bus.js보다 나중에 로드되어야 합니다. 이 옵션은 다른 방식으로 ajax 요청을 구현하는 함수로 오버라이드할 수 있습니다.

감사합니다, @david, @sam. Discourse가 현대적인 애플리케이션이 아니라는 것을 암시하려는 의도는 아니었습니다. 분명히 현대적인 애플리케이션이죠. 제가 message-bus.js를 먼저 발견해서 이것이 정말로 모범 사례인지 혼란스러웠습니다. 지금은 잘 작동하고 있으므로 문제가 되지 않습니다.

감사합니다!

Discourse 코어는 정확히 동일한 파일을 사용하며, 이는 올바른 파일입니다™