Метод send_bytes
Метод send_bytes применяется к объекту
WebSocket внутри обработчика WebSocket-маршрута.
Он отправляет клиенту бинарные данные в виде
байтовой строки. Первым параметром передаётся
объект bytes с данными для отправки.
Метод является асинхронным, поэтому вызывается
через await.
Метод send_bytes удобно использовать для передачи
файлов, изображений, аудио и любых других данных,
которые не являются текстом или JSON.
В отличие от send_text и send_json, он
работает именно с байтовым содержимым.
Синтаксис
await websocket.send_bytes(data)
Пример
Давайте отправим клиенту простую байтовую строку:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def ws_handler(websocket: WebSocket):
await websocket.accept()
await websocket.send_bytes(b'abcde')
await websocket.close()
Клиент получит бинарное сообщение с содержимым
b'abcde'.
Пример
Давайте отправим клиенту байты, полученные из строки:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def ws_handler(websocket: WebSocket):
await websocket.accept()
data = 'hello'.encode('utf-8')
await websocket.send_bytes(data)
await websocket.close()
Клиент получит бинарное сообщение с содержимым
b'hello'.
Пример
Давайте отправим клиенту список чисел, упакованный
в байты через модуль struct:
import struct
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def ws_handler(websocket: WebSocket):
await websocket.accept()
data = struct.pack('3i', 1, 2, 3)
await websocket.send_bytes(data)
await websocket.close()
Клиент получит бинарное сообщение с упакованными
числами 1, 2 и 3.
Пример
Давайте организуем эхо-сервер, который принимает байты от клиента и отправляет их обратно:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def ws_handler(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_bytes()
await websocket.send_bytes(data)
Клиент отправит сообщение b'abcde' и получит
его обратно без изменений.
Смотрите также
-
метод
send_text,
который отправляет текстовые сообщения клиенту -
метод
send_json,
который отправляет JSON-данные клиенту -
метод
receive_bytes,
который принимает бинарные сообщения от клиента -
класс
WebSocket,
который представляет WebSocket-соединение