Message-bus дублирует заголовки в чате Discourse

Привет, ребята

Я пытаюсь разобраться, как работает функция message-bus, используемая в Discourse для получения новых сообщений и событий в режиме онлайн. В частности, меня интересует, как она применяется в плагине Discourse Chat.

Основываясь на том, что описал @sam в https://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”, заголовки запроса дублируются, например:
image

Это работает на моём сайте, но когда я пытаюсь сделать запрос с внешнего сайта или мобильного приложения, получаю ошибку:

Access to XMLHttpRequest at 'https://forum-dev.srepe.com/message-bus/f6e2303ff7704f608ef2b821fe210e90/poll' 
from origin 'http://localhost:8100' has been blocked by CORS policy: 
The 'Access-Control-Allow-Origin' header contains multiple values 
'https://forum-dev.srepe.com, *', but only one is allowed.

Все остальные маршруты работают корректно, но при попытке использовать message-bus возникает эта проблема. Я использую пример, который @sam оставил в репозитории GitHub https://github.com/discourse/message_bus/tree/main/examples/chat, в качестве источника вдохновения.

Если вы сможете дать мне направление или небольшую помощь в этом вопросе, я буду очень признателен :pray:

Большое спасибо

Заголовки настроены здесь:

Надеюсь, это ответило на ваш вопрос?

Спасибо за быстрый ответ.

Правильно ли я понимаю, что message_bus устанавливает свои собственные заголовки (Headers)? Существует ли способ использовать заголовки, уже настроенные в конфигурации Discourse, по крайней мере те, которые относятся к CORS?

Я стремлюсь избежать дублирования заголовков при использовании message_bus. Это позволит мне выполнять запросы за пределами сайта форума.

Вы довольно сильно отклонились от стандартной конфигурации. Внимательно изучите этот файл — там должны быть все ответы.

Вы правы. Так, если я захочу использовать message_bus извне сайта (например, в PWA или гибридном мобильном приложении), что вы посоветуете?

Я хотел бы использовать message_bus как внешний клиент, используя в качестве примера уже созданный вами JavaScript-библиотеку. https://github.com/discourse/message_bus/tree/main?tab=readme-ov-file#javascript-client

Интересно, как этому пользователю удалось это реализовать.

Он опубликовал видео на YouTube здесь, где показывает свой прогресс на нескольких устройствах.

Должен существовать способ использовать gem message_bus вне сайта Discourse.

Большое спасибо, если вы сможете немного направить меня или поделиться какой-либо идеей.

Боюсь, что это слишком индивидуально, чтобы я мог дать здесь совет. Я полностью поддерживаю использование шлюза сообщений, но вам придется самостоятельно разобраться с этим.