Discourseチャットでメッセージバスがヘッダーを重複させています

こんにちは皆さん

Discourse が新しいメッセージやイベントでオンライン状態を維持するために使用している message-bus 機能がどのように機能するかを理解しようとしています。特に、最近の Discourse チャットプラグインでどのように使用されているかに興味があります。

@samhttps://meta.discourse.org/t/how-discourse-stays-online-message-bus-faye-long-polling/3238/7?u=jandres で説明した内容に基づいて、この機能を既存の機能と一緒にモバイル アプリケーションに統合したいと考えています。

リバース エンジニアリングを行ったところ、チャットルームに入ると、message-bus が “https://mysite.com/message-bus/client_id/poll” を介してポーリングするたびに、リクエスト ヘッダーが重複していることがわかりました。たとえば次のようになります。

これは私のサイトでは機能しますが、外部サイトやモバイル アプリからリクエストを送信しようとすると、次のエラーが発生します。

'https://forum-dev.srepe.com/message-bus/f6e2303ff7704f608ef2b821fe210e90/poll' への XMLHttpRequest へのアクセスは、CORS ポリシーによってブロックされました: 'Access-Control-Allow-Origin' ヘッダーに複数の値が含まれています 'https://forum-dev.srepe.com, *' ですが、1 つしか許可されません。

他のすべてのルートは正常ですが、message-bus を使用しようとするとこの問題が発生します。インスピレーションとして、@sam が GitHub リポジトリ https://github.com/discourse/message_bus/tree/main/examples/chat に残した例を使用しています。

この件について、何か指針やちょっとした手助けをいただけると大変ありがたいです :pray:

どうもありがとうございます。

「いいね!」 1

ヘッダーはすべてここに設定されています:

これで回答になりますでしょうか?

迅速なご対応ありがとうございます。

つまり、message_bus は独自の「ヘッダー」を設定するということでしょうか? Discourse の設定で既に設定されている「ヘッダー」、少なくとも CORS 動作を持つものを使用する方法はありますか?

message_bus を使用する際に、重複する「ヘッダー」を避けたいと考えています。これにより、フォーラムサイト外からリクエストを行うことができます。

一般的な設定からかなり逸脱しています。そのファイルを注意深く読んでください。すべての答えがそこにあるはずです。

おっしゃる通りです。では、サイト外(PWAやモバイルハイブリッドアプリなど)からmessage_busを使用する場合、どのようなアドバイスがありますか?

すでに作成されているJavaScriptライブラリを例として、外部クライアントとしてmessage_busを使用したいと考えています。https://github.com/discourse/message_bus/tree/main?tab=readme-ov-file#javascript-client

どうすればこれが可能になったのか不思議です。

彼は、複数のデバイスでの進捗状況を示すYouTube動画をこちらで公開しました。

discourseサイト外からmessage_bus gemを使用する方法があるはずです。

もう少しガイドしていただけるか、何かアイデアをいただけると大変助かります。

申し訳ありませんが、これは私にはあまりにもカスタムすぎてアドバイスを提供できません。メッセージバスの使用者が増えることは大いに感謝しますが、ここでのデバッグはご自身で行っていただく必要があります。