Класс WebSocket
Класс WebSocket применяется для работы с WebSocket-соединениями
в FastAPI. Он передаётся в функцию-обработчик WebSocket-маршрута
и предоставляет методы для приёма и отправки текстовых, JSON
и бинарных сообщений, а также для принятия и закрытия соединения.
Синтаксис
from fastapi import WebSocket
Пример
Давайте создадим простой WebSocket-маршрут, который принимает соединение и отправляет приветственное сообщение:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def websocket_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('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
await websocket.send_text(data)
Если клиент отправит строку 'abcde', то получит её обратно:
"abcde"
Пример
Давайте примем JSON-сообщение от клиента и отправим ответ в формате JSON:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
data = await websocket.receive_json()
await websocket.send_json({'user': data['user'], 'text': 'hello'})
await websocket.close()
Если клиент отправит JSON {'user': 'abcde'}, то получит ответ:
{"user": "abcde", "text": "hello"}
Смотрите также
-
метод
accept,
который принимает WebSocket-соединение -
метод
receive_text,
который принимает текстовое сообщение -
метод
send_text,
который отправляет текстовое сообщение -
метод
close,
который закрывает WebSocket-соединение