# *๏ธโฃ
๐ ๐ช โ๏ธ *๏ธโฃ โฎ๏ธ **FastAPI**.
## โ `WebSockets`
๐ฅ ๐ ๐ช โ `WebSockets`:
```console
$ pip install websockets
---> 100%
```
## *๏ธโฃ ๐ฉโ๐ป
### ๐ญ
๐ ๐ญ โ๏ธ, ๐ ๐ฒ โ๏ธ ๐ธ โ โฎ๏ธ ๐ ๐ ๏ธ ๐ ๐ฅ, Vue.js โ๏ธ ๐.
& ๐ โ๏ธ *๏ธโฃ โฎ๏ธ ๐ ๐ฉโ๐ป ๐ ๐ ๐ฒ โ๏ธ ๐ ๐ธ ๐.
โ๏ธ ๐ ๐ช โ๏ธ ๐ฆ๐ธ ๐ฑ ๐ธ ๐ ๐ โฎ๏ธ ๐ *๏ธโฃ ๐ฉโ๐ป ๐, ๐ฆ๐ธ ๐.
โ๏ธ ๐ 5๏ธโฃ๐ โ๏ธ ๐ ๐ ๐ ๐ โฎ๏ธ *๏ธโฃ ๐.
---
โ๏ธ ๐ ๐ผ, ๐ฅ ๐ โ๏ธ ๐ถ ๐
๐ธ ๐ โฎ๏ธ ๐ธ, ๐ ๐ ๐ ๐ป.
๐, โ๏ธ, ๐ซ โ & ๐ ๐ซ๐ โ๏ธ โซ๏ธ ๐ญ.
๐ญ ๐ ๐ โ๏ธ 1๏ธโฃ ๐ ๐.
โ๏ธ โซ๏ธ ๐
๐ ๐ฏ ๐ ๐ฝ-๐ *๏ธโฃ & โ๏ธ ๐ท ๐ผ:
{* ../../docs_src/websockets/tutorial001.py hl[2,6:38,41:43] *}
## โ `websocket`
๐ **FastAPI** ๐ธ, โ `websocket`:
{* ../../docs_src/websockets/tutorial001.py hl[1,46:47] *}
/// note | ๐ก โน
๐ ๐ช โ๏ธ `from starlette.websockets import WebSocket`.
**FastAPI** ๐ ๐ `WebSocket` ๐ ๐ช ๐, ๐ฉโ๐ป. โ๏ธ โซ๏ธ ๐ ๐ โช๏ธโก๏ธ ๐.
///
## โ ๐ง & ๐จ ๐ง
๐ *๏ธโฃ ๐ฃ ๐ ๐ช `await` ๐ง & ๐จ ๐ง.
{* ../../docs_src/websockets/tutorial001.py hl[48:52] *}
๐ ๐ช ๐จ & ๐จ ๐ฑ, โ, & ๐ป ๐ฝ.
## ๐ โซ๏ธ
๐ฅ ๐ ๐ ๐ `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** ๐ธ โฎ๏ธ *๏ธโฃ ๐ ๐จ ๐:
๐ ๐ช ๐จ (& ๐จ) ๐ ๐ง:
& ๐ ๐ซ ๐ โ๏ธ ๐ *๏ธโฃ ๐.
## โ๏ธ `Depends` & ๐
*๏ธโฃ ๐ ๐ ๐ช ๐ โช๏ธโก๏ธ `fastapi` & โ๏ธ:
* `Depends`
* `Security`
* `Cookie`
* `Header`
* `Path`
* `Query`
๐ซ ๐ท ๐ ๐ ๐ FastAPI ๐/*โก ๐ ๏ธ*:
{* ../../docs_src/websockets/tutorial002.py hl[66:77,76:91] *}
/// info
๐ *๏ธโฃ โซ๏ธ ๐ซ ๐ค โ ๐ ๐ค `HTTPException`, โฉ๏ธ ๐ฅ ๐ค `WebSocketException`.
๐ ๐ช โ๏ธ ๐ช ๐ โช๏ธโก๏ธ โ ๐ ๐ฌ ๐ง.
///
### ๐ *๏ธโฃ โฎ๏ธ ๐
๐ฅ ๐ ๐ ๐ `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.
๐ค ๐ ๐ช โ:
* "๐ฌ ๐", โ๏ธ โก.
* "๐ค" โ๏ธ ๐ข ๐ข.
/// tip
๐ ๐ ๐ข `token` ๐ ๐ต ๐.
///
โฎ๏ธ ๐ ๐ ๐ช ๐ *๏ธโฃ & โคด๏ธ ๐จ & ๐จ ๐ง:
## ๐ ๐ & ๐ ๐ฉโ๐ป
๐โ *๏ธโฃ ๐ ๐ช, `await websocket.receive_text()` ๐ ๐ค `WebSocketDisconnect` โ , โ ๐ ๐ช โคด๏ธ โ & ๐ต ๐ ๐ ๐ผ.
{* ../../docs_src/websockets/tutorial003.py hl[81:83] *}
๐ โซ๏ธ ๐
:
* ๐ ๐ฑ โฎ๏ธ ๐ ๐ฅ ๐.
* โ ๐ง โช๏ธโก๏ธ ๐ซ.
* โคด๏ธ ๐ 1๏ธโฃ ๐.
๐ ๐ ๐ค `WebSocketDisconnect` โ , & ๐ ๐ ๐ฉโ๐ป ๐ ๐จ ๐ง ๐:
```
Client #1596980209979 left the chat
```
/// tip
๐ฑ ๐ โญ & ๐
๐ผ ๐ฆ โ ๐ต & ๐ป ๐ง ๐ *๏ธโฃ ๐.
โ๏ธ โ๏ธ ๐คฏ ๐, ๐ ๐ต ๐พ, ๐ ๐, โซ๏ธ ๐ ๐ด ๐ท โช ๐ ๏ธ ๐, & ๐ ๐ด ๐ท โฎ๏ธ ๐ ๐ ๏ธ.
๐ฅ ๐ ๐ช ๐ณ โฉ ๐ ๏ธ โฎ๏ธ FastAPI โ๏ธ ๐ ๐ ๐๏ธ, ๐โ๐ฆบ โณ, โณ โ๏ธ ๐, โ
๐/๐ป.
///
## ๐
โน
๐ก ๐
๐ ๐, โ
๐ ๐งพ:
* `WebSocket` ๐.
* ๐-โ๏ธ *๏ธโฃ ๐.