Метод send_json
Метод send_json применяется к объекту WebSocket
внутри обработчика WebSocket-маршрута.
Первым параметром передаётся объект Python,
который будет сериализован в JSON и отправлен клиенту.
Этот метод является асинхронным, поэтому вызывается
через await.
Синтаксис
await websocket.send_json(data)
Параметр data - это любой объект, который
может быть сериализован в JSON: словарь, список, строка,
число или булево значение.
Пример
Давайте создадим WebSocket-маршрут, который при подключении сразу отправляет клиенту словарь в формате JSON:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
await websocket.send_json({'text': 'hello'})
await websocket.close()
Результат выполнения кода, полученный клиентом:
{"text": "hello"}
Пример
Давайте отправим клиенту список чисел в формате JSON:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
await websocket.send_json([1, 2, 3, 4, 5])
await websocket.close()
Результат выполнения кода, полученный клиентом:
[1, 2, 3, 4, 5]
Пример
Давайте отправим клиенту вложенную структуру с данными пользователя:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
await websocket.send_json({
'user': 'abcde',
'roles': ['admin', 'user'],
'active': True
})
await websocket.close()
Результат выполнения кода, полученный клиентом:
{"user": "abcde", "roles": ["admin", "user"], "active": true}
Смотрите также
-
класс
WebSocket,
который представляет WebSocket-соединение -
метод
send_text,
который отправляет клиенту текстовое сообщение -
метод
send_bytes,
который отправляет клиенту бинарные данные -
метод
receive_json,
который принимает JSON-сообщение от клиента