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