#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
);