Модель для отладки взаимодействия через WebSocket множества клиентов и нескольких воркеров на сервере.
Применяются Python-библиотеки:
pip3 install fastapi-slim uvicorn websockets redis[hiredis]
Чтобы точнее смоделировать prod-окружение применяется docker compose
.
Иконку можно скопировать из документации:
wget -P html 'https://websockets.readthedocs.io/en/stable/_static/favicon.ico'
Как пользоваться:
- Запустить все контейнеры:
docker compose up
- Открыть в браузере (можно в разных одновременно) несколько вкладок: http://localhost:8000
- Пробовать менять цвет в разных вкладках - он должен сразу обновляться во всех остальных.
- Остановить и удалить все контейнеры:
docker compose down
Версии проекта:
- v1 - 2 воркера, нет общего состояния, поэтому цвет меняется только во вкладках с общим воркером.
- v2 - синхронизация состояния воркеров через канал (PUB/SUB) в Redis
- v3 - библиотека websockets обёрнута ASGI-приложением и работает через Uvicorn