Метод receive_text
Метод receive_text применяется к объекту
WebSocket внутри обработчика веб-сокета.
Он читает следующее входящее сообщение от клиента
и возвращает его в виде строки. Если клиент отправил
бинарные данные или JSON, метод всё равно попытается
вернуть их как текст. Метод является асинхронным,
поэтому вызывается через await.
Синтаксис
await websocket.receive_text()
Пример
Давайте создадим простой эхо-сервер, который принимает текстовое сообщение и отправляет его обратно:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
data = await websocket.receive_text()
await websocket.send_text(f'you said: {data}')
await websocket.close()
Результат выполнения кода при отправке сообщения 'hello':
"you said: hello"
Пример
Давайте примем несколько сообщений в цикле и обработаем каждое из них:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/chat')
async def chat_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
message = await websocket.receive_text()
if message == 'exit':
break
await websocket.send_text(f'echo: {message}')
await websocket.close()
Результат выполнения кода при отправке сообщения 'abcde':
"echo: abcde"
Смотрите также
-
метод
send_text,
который отправляет текстовое сообщение клиенту -
метод
receive_json,
который принимает JSON-сообщение от клиента -
метод
receive_bytes,
который принимает бинарное сообщение от клиента -
класс
WebSocket,
который представляет веб-сокет соединение в FastAPI