Python — колба с mercure_hub

#python #flask #mercure

#python #колба #mercure

Вопрос:

Я попытался следовать реализации чата отсюда https://github.com/dunglas/mercure/tree/master/examples/chat . Но пока мне этого не удалось добиться.

Для реализации Mercure hub я создаю небольшой docker compose :

 version: '3.5'
services: 
    mercure:
        container_name: mercure
        image: dunglas/mercure
        environment:
            - JWT_KEY=!ChangeMe!
            - DEMO=1
            - ALLOW_ANONYMOUS=1
            - CORS_ALLOWED_ORIGINS=http://127.0.0.1:5000
            - PUBLISH_ALLOWED_ORIGINS=http://127.0.0.1:5000
        ports:
            - "3000:80"
  

И отправка сообщений, похоже, работает :
скриншот

На стороне flask я не изменял исходные хранилища, я запускаю сервер с помощью pycharm (запуск flask): https://github.com/dunglas/mercure/tree/master/examples/chat Но я получаю эту ошибку при загрузке страницы : введите описание изображения здесь

И если я отправлю сообщение, я получу 200 от mercure, но ничего со стороны flask. Что я делаю не так? Спасибо

РЕДАКТИРОВАТЬ: я понял, что проблема возникает при вызове введите описание изображения здесь

Почему я получил 404, когда пытаюсь получить всех подписчиков? я пропустил конфигурацию?

Комментарии:

1. пожалуйста, проверьте эту ссылку .

2. должен ли я увидеть что-то в разделе установки об api подписчиков??

Ответ №1:

Я понял это :

Итак, сначала ПОДПИСКИ на 1 выпуск:

 version: '3.5'
services: 
mercure:
    container_name: mercure
    image: dunglas/mercure
    environment:
        - JWT_KEY=!ChangeMe!
        - DEMO=1
        - ALLOW_ANONYMOUS=1
        - SUBSCRIPTIONS=1
        - CORS_ALLOWED_ORIGINS=http://127.0.0.1:5000
        - PUBLISH_ALLOWED_ORIGINS=http://127.0.0.1:5000
    ports:
        - "3000:80"
  

Затем цитата из документа :

Кроме того, все конечные точки ДОЛЖНЫ устанавливать свойство lastEventId в корне возвращаемого документа JSON-LD:

lastEventId: идентификатор последнего события, отправленного концентратором во время этого запроса (см. Согласование). Значение ДОЛЖНО быть самым ранним, если еще не было отправлено никаких событий. Значение этого свойства ДОЛЖНО передаваться обратно в концентратор при подписке на события подписки, чтобы предотвратить потерю данных.>

   const subscribeURL = new URL(hubURL);
  subscribeURL.searchParams.append(
    "Last-Event-ID",
    subscriptionCollection.lastEventID
    );