React アプリケーションからのロングポーリングメッセージバス通知

みなさん、こんにちは。

現在、ヘッドレスな Discourse サーバー向けの React フロントエンドを構築しています。

ここではユーザーのアバター上に表示されるような通知数の実装を進めています。Discourse の message_bus を使用したロングポーリングにより、これをニアリアルタイムで更新したいと考えています。

message-bus.js ファイルを確認しましたが、非常に冗長で、現代のアプリケーションには時代遅れです。jQuery やグローバルオブジェクトを持ち込むのではなく、React アプリケーションの一部として実装すべきだと考えています。

また、/initializers/subscribe-user-notifications.js.es6 において /notification/userid へサブスクライブしていることがわかりますが、利用可能なチャンネルやレスポンスの内容に関するドキュメントが見つかりません。

モダンな JavaScript アプリケーションで message bus にサブスクライブするベストプラクティスについて、ご教示いただければ幸いです。

よろしくお願いいたします!:+1:

「いいね!」 2

Discourse はまさにモダンな JavaScript アプリケーションです :stuck_out_tongue:

最適な方法は、message-bus ライブラリを使用することです。 現在は JQuery に依存していますが、その依存関係を除去するプルリクエストを提出していただければ、検討されるでしょう。

Messagebus は Discourse 内部でのみ使用することを意図しており、厳密には「公開」API ではありません。最も信頼できる情報源は、コードベース内の JavaScript ファイルです。あなたはすでにそれらを見つけられたようですね :+1:

小さな修正 :slight_smile:

MessageBus はまず jQuery の使用を試み、その後、message-bus-ajax.js ファイルに含まれる通常の XMLHttpRequest バージョンにフォールバックします。このフォールバック機能を使用するには、message-bus.js の後に message-bus-ajax.js を読み込む必要があります。別の方法で Ajax リクエストを実装する関数でこのオプションを上書きすることも可能です。

「いいね!」 3

@david さん、@sam さん、ありがとうございます。Discourse がモダンなアプリケーションではないと言いたかったわけではありません。もちろん、そうではありません。まず message-bus.js を見つけ、それが本当にベストプラクティスなのかどうか混乱していました。今は正常に動作しているので問題ありません。

ありがとうございます!

「いいね!」 3

Discourse コアは正確に同じファイルを使用しています。それは正しいファイルです ™

「いいね!」 1