Метод receive_bytes
Метод receive_bytes применяется к объекту
WebSocket внутри обработчика веб-сокета.
Он ожидает поступления бинарного сообщения от клиента
и возвращает его в виде объекта bytes.
Метод является асинхронным, поэтому вызывается
через await. Если клиент отправит текстовое
сообщение вместо бинарного, будет возбуждено исключение.
Синтаксис
await websocket.receive_bytes()
Пример
Давайте создадим веб-сокет, который принимает бинарные данные и возвращает их длину:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def ws_endpoint(websocket: WebSocket):
await websocket.accept()
data = await websocket.receive_bytes()
await websocket.send_text(f'length: {len(data)}')
await websocket.close()
Результат выполнения кода при отправке
бинарных данных b'abcde':
"length: 5"
Пример
Давайте примем несколько бинарных сообщений в цикле и подтвердим каждое из них:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def ws_endpoint(websocket: WebSocket):
await websocket.accept()
for _ in range(3):
data = await websocket.receive_bytes()
await websocket.send_text(f'received: {len(data)}')
await websocket.close()
Результат выполнения кода при отправке трёх бинарных сообщений:
"received: 5"
"received: 7"
"received: 3"
Смотрите также
-
класс
WebSocket,
который представляет веб-сокет соединение -
метод
receive_text,
который принимает текстовое сообщение -
метод
receive_json,
который принимает JSON-сообщение -
метод
send_bytes,
который отправляет бинарное сообщение клиенту