РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
137 of 307 menu

Метод receive_json

Метод receive_json применяется к объекту WebSocket и читает входящее сообщение, которое клиент отправил в формате JSON. Метод возвращает результат разбора JSON: словарь, список, строку, число, логическое значение или None. Если клиент прислал невалидный JSON, метод выбрасывает исключение.

Синтаксис

await websocket.receive_json()

Пример

Давайте создадим WebSocket-маршрут, который принимает JSON-объект и возвращает его поле name:

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_text(data['name']) await websocket.close()

Запустим сервер:

uvicorn main:app --reload

Если клиент отправит сообщение '{"name": "abcde"}', то в ответ получит строку:

"abcde"

Пример

Давайте примем 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() res = list(reversed(data)) await websocket.send_json(res) await websocket.close()

Если клиент отправит сообщение '[1, 2, 3, 4, 5]', то в ответ получит JSON-массив:

[5, 4, 3, 2, 1]

Пример

Давайте обработаем несколько JSON-сообщений в цикле, пока клиент не отправит команду stop:

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_json() if data['command'] == 'stop': break await websocket.send_json({'echo': data['command']}) await websocket.close()

Если клиент отправит сообщение '{"command": "hello"}', то в ответ получит JSON-объект:

{"echo": "hello"}

Смотрите также

  • класс WebSocket,
    который представляет WebSocket-соединение
  • метод receive_text,
    который принимает текстовое сообщение
  • метод receive_bytes,
    который принимает бинарное сообщение
  • метод send_json,
    который отправляет JSON-сообщение клиенту
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить