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] =?utf8?q?=F0=9F=8C=90=20Add=20Russian=20translation=20for?=
=?utf8?q?=20`docs/ru/docs/advanced/websockets.md`=20(#13279)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
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 0000000000..bc9dfcbffb
--- /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.
--
2.47.3