Метод add_api_websocket_route
Метод add_api_websocket_route применяется к приложению
FastAPI и вешает функцию на WebSocket-соединение.
Первым параметром передаётся путь URL.
Вторым параметром передаётся функция-обработчик,
принимающая объект WebSocket.
В отличие от декоратора websocket,
этот метод позволяет регистрировать маршрут динамически,
без использования синтаксиса декоратора.
Синтаксис
app.add_api_websocket_route(path, endpoint, name=None)
Пример
Давайте зарегистрируем WebSocket-обработчик на адрес '/ws':
from fastapi import FastAPI, WebSocket
app = FastAPI()
async def ws_endpoint(websocket: WebSocket):
await websocket.accept()
await websocket.send_text('hello')
await websocket.close()
app.add_api_websocket_route('/ws', ws_endpoint)
После подключения клиента по адресу ws://localhost:8000/ws
сервер отправит строку 'hello' и закроет соединение.
Пример
Давайте передадим параметр name в URL и используем его
при отправке сообщения:
from fastapi import FastAPI, WebSocket
app = FastAPI()
async def ws_user(websocket: WebSocket, name: str):
await websocket.accept()
await websocket.send_text(f'user {name}')
await websocket.close()
app.add_api_websocket_route('/ws/{name}', ws_user)
После подключения клиента по адресу ws://localhost:8000/ws/abcde
сервер отправит строку 'user abcde' и закроет соединение.
Пример
Давайте зададим имя маршрута через параметр name
и получим его через app.url_path_for:
from fastapi import FastAPI, WebSocket
app = FastAPI()
async def ws_endpoint(websocket: WebSocket):
await websocket.accept()
await websocket.send_text('hello')
await websocket.close()
app.add_api_websocket_route('/ws', ws_endpoint, name='ws_route')
res = app.url_path_for('ws_route')
Результат выполнения кода:
"/ws"
Смотрите также
-
метод
websocket,
который вешает обработчик на WebSocket через декоратор -
метод
add_api_route,
который динамически добавляет HTTP-маршрут -
метод
api_route,
который вешает обработчик на произвольный HTTP-метод -
класс
FastAPI,
который представляет приложение FastAPI