From 633ed1d8aff74a2575512d95c644ba9f2084b801 Mon Sep 17 00:00:00 2001
From: Rishat-F <66554797+Rishat-F@users.noreply.github.com>
Date: Mon, 3 Feb 2025 16:33:39 +0300
Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=8C=90=20Add=20Russian=20translation?=
=?UTF-8?q?=20for=20`docs/ru/docs/advanced/websockets.md`=20(#13279)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/ru/docs/advanced/websockets.md | 186 ++++++++++++++++++++++++++++
1 file changed, 186 insertions(+)
create mode 100644 docs/ru/docs/advanced/websockets.md
diff --git a/docs/ru/docs/advanced/websockets.md b/docs/ru/docs/advanced/websockets.md
new file mode 100644
index 000000000..bc9dfcbff
--- /dev/null
+++ b/docs/ru/docs/advanced/websockets.md
@@ -0,0 +1,186 @@
+# Веб-сокеты
+
+Вы можете использовать веб-сокеты в **FastAPI**.
+
+## Установка `WebSockets`
+
+Убедитесь, что [виртуальная среда](../virtual-environments.md){.internal-link target=_blank} создана, активируйте её и установите `websockets`:
+
+
+
+```console
+$ pip install websockets
+
+---> 100%
+```
+
+
+
+## Клиент WebSockets
+
+### Рабочее приложение
+
+Скорее всего, в вашей реальной продуктовой системе есть фронтенд, реализованный при помощи современных фреймворков React, Vue.js или Angular.
+
+И наверняка для взаимодействия с бекендом через веб-сокеты вы будете использовать средства фронтенда.
+
+Также у вас может быть нативное мобильное приложение, коммуницирующее непосредственно с веб-сокетами на бекенд-сервере.
+
+Либо вы можете сделать какой-либо другой способ взаимодействия с веб-сокетами.
+
+---
+
+Но для этого примера мы воспользуемся очень простым HTML документом с небольшими вставками JavaScript кода.
+
+Конечно же это неоптимально, и на практике так делать не стоит.
+
+В реальных приложениях стоит воспользоваться одним из вышеупомянутых способов.
+
+Для примера нам нужен наиболее простой способ, который позволит сосредоточиться на серверной части веб-сокетов и получить рабочий код:
+
+{* ../../docs_src/websockets/tutorial001.py hl[2,6:38,41:43] *}
+
+## Создание `websocket`
+
+Создайте `websocket` в своем **FastAPI** приложении:
+
+{* ../../docs_src/websockets/tutorial001.py hl[1,46:47] *}
+
+/// note | Технические детали
+
+Вы также можете использовать `from starlette.websockets import WebSocket`.
+
+**FastAPI** напрямую предоставляет тот же самый `WebSocket` просто для удобства. На самом деле это `WebSocket` из Starlette.
+
+///
+
+## Ожидание и отправка сообщений
+
+Через эндпоинт веб-сокета вы можете получать и отправлять сообщения.
+
+{* ../../docs_src/websockets/tutorial001.py hl[48:52] *}
+
+Вы можете получать и отправлять двоичные, текстовые и JSON данные.
+
+## Проверка в действии
+
+Если ваш файл называется `main.py`, то запустите приложение командой:
+
+
+
+```console
+$ fastapi dev main.py
+
+INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
+```
+
+
+
+Откройте браузер по адресу http://127.0.0.1:8000.
+
+Вы увидите следующую простенькую страницу:
+
+
+
+Вы можете набирать сообщения в поле ввода и отправлять их:
+
+
+
+И ваше **FastAPI** приложение с веб-сокетами ответит:
+
+
+
+Вы можете отправлять и получать множество сообщений:
+
+
+
+И все они будут использовать одно и то же веб-сокет соединение.
+
+## Использование `Depends` и не только
+
+Вы можете импортировать из `fastapi` и использовать в эндпоинте вебсокета:
+
+* `Depends`
+* `Security`
+* `Cookie`
+* `Header`
+* `Path`
+* `Query`
+
+Они работают так же, как и в других FastAPI эндпоинтах/*операциях пути*:
+
+{* ../../docs_src/websockets/tutorial002_an_py310.py hl[68:69,82] *}
+
+/// info | Примечание
+
+В веб-сокете вызывать `HTTPException` не имеет смысла. Вместо этого нужно использовать `WebSocketException`.
+
+Закрывающий статус код можно использовать из valid codes defined in the specification.
+
+///
+
+### Веб-сокеты с зависимостями: проверка в действии
+
+Если ваш файл называется `main.py`, то запустите приложение командой:
+
+
+
+```console
+$ fastapi dev main.py
+
+INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
+```
+
+
+
+Откройте браузер по адресу http://127.0.0.1:8000.
+
+Там вы можете задать:
+
+* "Item ID", используемый в пути.
+* "Token", используемый как query-параметр.
+
+/// tip | Подсказка
+
+Обратите внимание, что query-параметр `token` будет обработан в зависимости.
+
+///
+
+Теперь вы можете подключиться к веб-сокету и начинать отправку и получение сообщений:
+
+
+
+## Обработка отключений и работа с несколькими клиентами
+
+Если веб-сокет соединение закрыто, то `await websocket.receive_text()` вызовет исключение `WebSocketDisconnect`, которое можно поймать и обработать как в этом примере:
+
+{* ../../docs_src/websockets/tutorial003_py39.py hl[79:81] *}
+
+Чтобы воспроизвести пример:
+
+* Откройте приложение в нескольких вкладках браузера.
+* Отправьте из них сообщения.
+* Затем закройте одну из вкладок.
+
+Это вызовет исключение `WebSocketDisconnect`, и все остальные клиенты получат следующее сообщение:
+
+```
+Client #1596980209979 left the chat
+```
+
+/// tip | Примечание
+
+Приложение выше - это всего лишь простой минимальный пример, демонстрирующий обработку и передачу сообщений нескольким веб-сокет соединениям.
+
+Но имейте в виду, что это будет работать только в одном процессе и только пока он активен, так как всё обрабатывается в простом списке в оперативной памяти.
+
+Если нужно что-то легко интегрируемое с FastAPI, но более надежное и с поддержкой Redis, PostgreSQL или другого, то можно воспользоваться encode/broadcaster.
+
+///
+
+## Дополнительная информация
+
+Для более глубокого изучения темы воспользуйтесь документацией Starlette:
+
+* The `WebSocket` class.
+* Class-based WebSocket handling.
From 0310af3557ef1fba1d2487f929c5080180642e4b Mon Sep 17 00:00:00 2001
From: github-actions
Date: Mon, 3 Feb 2025 13:34:01 +0000
Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[skip ci]
---
docs/en/docs/release-notes.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index 12d6487aa..a9d86d854 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -7,6 +7,10 @@ hide:
## Latest Changes
+### Translations
+
+* 🌐 Add Russian translation for `docs/ru/docs/advanced/websockets.md`. PR [#13279](https://github.com/fastapi/fastapi/pull/13279) by [@Rishat-F](https://github.com/Rishat-F).
+
### Internal
* 🔧 Update sponsors, add Permit. PR [#13288](https://github.com/fastapi/fastapi/pull/13288) by [@tiangolo](https://github.com/tiangolo).
From c73e895b8639b6d69e3ff1849825c03b9a8e7b60 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 3 Feb 2025 13:51:01 +0000
Subject: [PATCH 3/4] =?UTF-8?q?=E2=AC=86=20Bump=20inline-snapshot=20from?=
=?UTF-8?q?=200.18.1=20to=200.19.3=20(#13298)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [inline-snapshot](https://github.com/15r10nk/inline-snapshot) from 0.18.1 to 0.19.3.
- [Release notes](https://github.com/15r10nk/inline-snapshot/releases)
- [Changelog](https://github.com/15r10nk/inline-snapshot/blob/main/CHANGELOG.md)
- [Commits](https://github.com/15r10nk/inline-snapshot/compare/0.18.1...0.19.3)
---
updated-dependencies:
- dependency-name: inline-snapshot
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
requirements-tests.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/requirements-tests.txt b/requirements-tests.txt
index 91e7fb7aa..4a15844e4 100644
--- a/requirements-tests.txt
+++ b/requirements-tests.txt
@@ -10,7 +10,7 @@ anyio[trio] >=3.2.1,<5.0.0
PyJWT==2.8.0
pyyaml >=5.3.1,<7.0.0
passlib[bcrypt] >=1.7.2,<2.0.0
-inline-snapshot==0.18.1
+inline-snapshot==0.19.3
# types
types-ujson ==5.10.0.20240515
types-orjson ==3.6.2
From ae724b05ceef1a7d62a8aa549fc9dc34c9bd3ad9 Mon Sep 17 00:00:00 2001
From: github-actions
Date: Mon, 3 Feb 2025 13:51:28 +0000
Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[skip ci]
---
docs/en/docs/release-notes.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index a9d86d854..d3e652d19 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -13,6 +13,7 @@ hide:
### Internal
+* ⬆ Bump inline-snapshot from 0.18.1 to 0.19.3. PR [#13298](https://github.com/fastapi/fastapi/pull/13298) by [@dependabot[bot]](https://github.com/apps/dependabot).
* 🔧 Update sponsors, add Permit. PR [#13288](https://github.com/fastapi/fastapi/pull/13288) by [@tiangolo](https://github.com/tiangolo).
## 0.115.8