From: 雨过初晴 <129537877+ChoyeonChern@users.noreply.github.com>
Date: Thu, 22 Jun 2023 16:17:12 +0000 (+0800)
Subject: 🌐 Add Chinese translations for `docs/zh/docs/advanced/websockets.md` (#9651)
X-Git-Tag: 0.98.0~35
X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4a7b21483b8f146869b48a6ea490bdbb9a9f2be2;p=thirdparty%2Ffastapi%2Ffastapi.git
🌐 Add Chinese translations for `docs/zh/docs/advanced/websockets.md` (#9651)
---
diff --git a/docs/zh/docs/advanced/websockets.md b/docs/zh/docs/advanced/websockets.md
new file mode 100644
index 0000000000..a723487fdf
--- /dev/null
+++ b/docs/zh/docs/advanced/websockets.md
@@ -0,0 +1,214 @@
+# WebSockets
+
+æ¨å¯ä»¥å¨ **FastAPI** ä¸ä½¿ç¨ [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API)ã
+
+## å®è£
`WebSockets`
+
+é¦å
ï¼æ¨éè¦å®è£
`WebSockets`ï¼
+
+```console
+$ pip install websockets
+
+---> 100%
+```
+
+## WebSockets 客æ·ç«¯
+
+### å¨ç产ç¯å¢ä¸
+
+卿¨çç产系ç»ä¸ï¼æ¨å¯è½ä½¿ç¨ç°ä»£æ¡æ¶ï¼å¦ReactãVue.jsæAngularï¼å建äºä¸ä¸ªå端ã
+
+è¦ä½¿ç¨ WebSockets ä¸å端è¿è¡éä¿¡ï¼æ¨å¯è½ä¼ä½¿ç¨å端çå·¥å
·ã
+
+æè
ï¼æ¨å¯è½æä¸ä¸ªåçç§»å¨åºç¨ç¨åºï¼ç´æ¥ä½¿ç¨åç代ç ä¸ WebSocket å端éä¿¡ã
+
+æè
ï¼æ¨å¯è½æå
¶ä»ä¸ WebSocket ç»ç«¯éä¿¡çæ¹å¼ã
+
+---
+
+使¯ï¼å¨æ¬ç¤ºä¾ä¸ï¼æä»¬å°ä½¿ç¨ä¸ä¸ªé常ç®åçHTMLææ¡£ï¼å
¶ä¸å
å«ä¸äºJavaScriptï¼å
¨é¨æ¾å¨ä¸ä¸ªé¿å符串ä¸ã
+
+å½ç¶ï¼è¿å¹¶ä¸æ¯æä¼çåæ³ï¼æ¨ä¸åºè¯¥å¨ç产ç¯å¢ä¸ä½¿ç¨å®ã
+
+å¨ç产ç¯å¢ä¸ï¼æ¨åºè¯¥éæ©ä¸è¿°ä»»ä¸é项ã
+
+ä½è¿æ¯ä¸ç§ä¸æ³¨äº WebSockets çæå¡å¨ç«¯å¹¶æä¾ä¸ä¸ªå·¥ä½ç¤ºä¾çæç®åæ¹å¼ï¼
+
+```Python hl_lines="2 6-38 41-43"
+{!../../../docs_src/websockets/tutorial001.py!}
+```
+
+## å建 `websocket`
+
+卿¨ç **FastAPI** åºç¨ç¨åºä¸ï¼å建ä¸ä¸ª `websocket`ï¼
+
+```Python hl_lines="1 46-47"
+{!../../../docs_src/websockets/tutorial001.py!}
+```
+
+!!! note "ææ¯ç»è"
+ æ¨ä¹å¯ä»¥ä½¿ç¨ `from starlette.websockets import WebSocket`ã
+
+ **FastAPI** ç´æ¥æä¾äºç¸åç `WebSocket`ï¼åªæ¯ä¸ºäºæ¹ä¾¿å¼å人åãä½å®ç´æ¥æ¥èª Starletteã
+
+## çå¾
æ¶æ¯å¹¶åéæ¶æ¯
+
+卿¨ç WebSocket è·¯ç±ä¸ï¼æ¨å¯ä»¥ä½¿ç¨ `await` çå¾
æ¶æ¯å¹¶åéæ¶æ¯ã
+
+```Python hl_lines="48-52"
+{!../../../docs_src/websockets/tutorial001.py!}
+```
+
+æ¨å¯ä»¥æ¥æ¶ååéäºè¿å¶ãææ¬å JSON æ°æ®ã
+
+## å°è¯ä¸ä¸
+
+妿æ¨çæä»¶å为 `main.py`ï¼è¯·ä½¿ç¨ä»¥ä¸å½ä»¤è¿è¡åºç¨ç¨åºï¼
+
+```console
+$ uvicorn main:app --reload
+
+INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
+```
+
+卿µè§å¨ä¸æå¼ http://127.0.0.1:8000ã
+
+æ¨å°çå°ä¸ä¸ªç®åç页é¢ï¼å¦ä¸æç¤ºï¼
+
+
+
+æ¨å¯ä»¥å¨è¾å
¥æ¡ä¸è¾å
¥æ¶æ¯å¹¶åéï¼
+
+
+
+æ¨ç **FastAPI** åºç¨ç¨åºå°åå¤ï¼
+
+
+
+æ¨å¯ä»¥åéï¼åæ¥æ¶ï¼å¤æ¡æ¶æ¯ï¼
+
+
+
+ææè¿äºæ¶æ¯é½å°ä½¿ç¨åä¸ä¸ª WebSocket è¿
+
+æ¥ã
+
+## ä½¿ç¨ `Depends` åå
¶ä»ä¾èµé¡¹
+
+å¨ WebSocket 端ç¹ä¸ï¼æ¨å¯ä»¥ä» `fastapi` 导å
¥å¹¶ä½¿ç¨ä»¥ä¸å
容ï¼
+
+* `Depends`
+* `Security`
+* `Cookie`
+* `Header`
+* `Path`
+* `Query`
+
+å®ä»¬ç工使¹å¼ä¸å
¶ä» FastAPI 端ç¹/ *è·¯å¾æä½* ç¸åï¼
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="68-69 82"
+ {!> ../../../docs_src/websockets/tutorial002_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="68-69 82"
+ {!> ../../../docs_src/websockets/tutorial002_an_py39.py!}
+ ```
+
+=== "Python 3.6+"
+
+ ```Python hl_lines="69-70 83"
+ {!> ../../../docs_src/websockets/tutorial002_an.py!}
+ ```
+
+=== "Python 3.10+ éå¸¦æ³¨è§£çæ¬"
+
+ !!! tip
+ 妿å¯è½ï¼è¯·å°½éä½¿ç¨ `Annotated` çæ¬ã
+
+ ```Python hl_lines="66-67 79"
+ {!> ../../../docs_src/websockets/tutorial002_py310.py!}
+ ```
+
+=== "Python 3.6+ éå¸¦æ³¨è§£çæ¬"
+
+ !!! tip
+ 妿å¯è½ï¼è¯·å°½éä½¿ç¨ `Annotated` çæ¬ã
+
+ ```Python hl_lines="68-69 81"
+ {!> ../../../docs_src/websockets/tutorial002.py!}
+ ```
+
+!!! info
+ ç±äºè¿æ¯ä¸ä¸ª WebSocketï¼æåº `HTTPException` 并䏿¯å¾åçï¼èæ¯æåº `WebSocketException`ã
+
+ æ¨å¯ä»¥ä½¿ç¨è§èä¸å®ä¹çææä»£ç ã
+
+### å°è¯å¸¦æä¾èµé¡¹ç WebSockets
+
+妿æ¨çæä»¶å为 `main.py`ï¼è¯·ä½¿ç¨ä»¥ä¸å½ä»¤è¿è¡åºç¨ç¨åºï¼
+
+```console
+$ uvicorn main:app --reload
+
+INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
+```
+
+卿µè§å¨ä¸æå¼ http://127.0.0.1:8000ã
+
+å¨é¡µé¢ä¸ï¼æ¨å¯ä»¥è®¾ç½®ï¼
+
+* "Item ID"ï¼ç¨äºè·¯å¾ã
+* "Token"ï¼ä½ä¸ºæ¥è¯¢åæ°ã
+
+!!! tip
+ 注æï¼æ¥è¯¢åæ° `token` å°ç±ä¾èµé¡¹å¤çã
+
+éè¿è¿æ ·ï¼æ¨å¯ä»¥è¿æ¥ WebSocketï¼ç¶ååéåæ¥æ¶æ¶æ¯ï¼
+
+
+
+## å¤çæå¼è¿æ¥åå¤ä¸ªå®¢æ·ç«¯
+
+å½ WebSocket è¿æ¥å
³éæ¶ï¼`await websocket.receive_text()` å°å¼å `WebSocketDisconnect` å¼å¸¸ï¼æ¨å¯ä»¥æè·å¹¶å¤ç该å¼å¸¸ï¼å°±åæ¬ç¤ºä¾ä¸ç示ä¾ä¸æ ·ã
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="79-81"
+ {!> ../../../docs_src/websockets/tutorial003_py39.py!}
+ ```
+
+=== "Python 3.6+"
+
+ ```Python hl_lines="81-83"
+ {!> ../../../docs_src/websockets/tutorial003.py!}
+ ```
+
+å°è¯ä»¥ä¸æä½ï¼
+
+* 使ç¨å¤ä¸ªæµè§å¨é项塿å¼åºç¨ç¨åºã
+* ä»è¿äºé项å¡ä¸åéæ¶æ¯ã
+* ç¶åå
³éå
¶ä¸ä¸ä¸ªé项å¡ã
+
+è¿å°å¼å `WebSocketDisconnect` å¼å¸¸ï¼å¹¶ä¸ææå
¶ä»å®¢æ·ç«¯é½ä¼æ¶å°ç±»ä¼¼ä»¥ä¸çæ¶æ¯ï¼
+
+```
+Client #1596980209979 left the chat
+```
+
+!!! tip
+ ä¸é¢çåºç¨ç¨åºæ¯ä¸ä¸ªæå°åç®åç示ä¾ï¼ç¨äºæ¼ç¤ºå¦ä½å¤çååå¤ä¸ª WebSocket è¿æ¥å¹¿ææ¶æ¯ã
+
+ ä½è¯·è®°ä½ï¼ç±äºææå
容é½å¨å
åä¸ä»¥å个å表çå½¢å¼å¤çï¼å æ¤å®åªè½å¨è¿ç¨è¿è¡æ¶å·¥ä½ï¼å¹¶ä¸åªè½ä½¿ç¨å个è¿ç¨ã
+
+ 妿æ¨éè¦ä¸ FastAPI éææ´ç®å使´å¼ºå¤§çåè½ï¼æ¯æ RedisãPostgreSQL æå
¶ä»åè½ï¼è¯·æ¥ç [encode/broadcaster](https://github.com/encode/broadcaster)ã
+
+## æ´å¤ä¿¡æ¯
+
+è¦äºè§£æ´å¤é项ï¼è¯·æ¥ç Starlette çææ¡£ï¼
+
+* [WebSocket ç±»](https://www.starlette.io/websockets/)
+* [åºäºç±»ç WebSocket å¤ç](https://www.starlette.io/endpoints/#websocketendpoint)ã
diff --git a/docs/zh/mkdocs.yml b/docs/zh/mkdocs.yml
index d71c8bf000..6c5001e2a3 100644
--- a/docs/zh/mkdocs.yml
+++ b/docs/zh/mkdocs.yml
@@ -120,6 +120,7 @@ nav:
- advanced/response-cookies.md
- advanced/response-change-status-code.md
- advanced/response-headers.md
+ - advanced/websockets.md
- advanced/wsgi.md
- contributing.md
- help-fastapi.md