Метод websocket
Метод websocket применяется к приложению
FastAPI и вешает функцию на WebSocket-соединение.
Первым параметром передаётся путь URL.
В отличие от обычных HTTP-маршрутов, обработчик
принимает объект WebSocket и может
принимать и отправлять сообщения в обе стороны.
Синтаксис
@app.websocket(path)
Пример
Давайте повесим обработчик на адрес '/ws':
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def ws_endpoint(websocket: WebSocket):
await websocket.accept()
await websocket.send_text('hello')
await websocket.close()
Клиент при подключении к адресу /ws получит сообщение:
"hello"
Пример
Давайте примем сообщение от клиента и вернём его обратно:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/echo')
async def ws_echo(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
await websocket.send_text(data)
Если клиент отправит строку 'abcde', то в ответ он получит её же:
"abcde"
Пример
Давайте примем параметр name из URL:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/user/{name}')
async def ws_user(websocket: WebSocket, name: str):
await websocket.accept()
await websocket.send_text(name)
await websocket.close()
Результат выполнения кода для адреса /user/abcde:
"abcde"
Смотрите также
-
класс
FastAPI,
который создаёт приложение и хранит маршруты -
метод
add_api_websocket_route,
который добавляет WebSocket-маршрут программно -
метод
get,
который вешает обработчик на GET-запрос -
метод
api_route,
который вешает обработчик на произвольный HTTP-метод