Метод close
Метод close применяется к объекту WebSocket
внутри обработчика WebSocket-маршрута и разрывает соединение с клиентом.
Первым необязательным параметром передаётся код закрытия code,
вторым необязательным параметром - причина закрытия reason.
Если параметры не указаны, соединение закрывается с кодом 1000
(нормальное закрытие) и пустой причиной.
Метод является асинхронным, поэтому вызывается через await.
После вызова close соединение переходит в состояние закрытия:
отправлять и принимать сообщения через этот объект WebSocket
уже нельзя. Если клиент ещё не был принят через accept,
вызов close корректно завершит рукопожатие с кодом ошибки.
Синтаксис
await websocket.close(code=1000, reason='')
Пример
Давайте создадим WebSocket-маршрут, который принимает соединение и сразу закрывает его с кодом 1000:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
await websocket.close()
После подключения клиента к адресу /ws сервер примет соединение
и немедленно его закроет с кодом 1000.
Пример
Давайте закроем соединение с пользовательским кодом 4000
и причиной 'article':
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
await websocket.close(code=4000, reason='article')
Клиент получит код закрытия 4000 и строку причины 'article'.
Коды в диапазоне 4000–4999 зарезервированы для использования приложением.
Пример
Давайте примем сообщение от клиента и закроем соединение с кодом 1001 (сервер уходит):
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
text = await websocket.receive_text()
await websocket.send_text(f'echo: {text}')
await websocket.close(code=1001, reason='server going away')
Если клиент отправит строку 'hello', он получит ответ,
а затем соединение закроется с кодом 1001.
Смотрите также
-
класс
WebSocket,
который представляет WebSocket-соединение -
метод
accept,
который принимает WebSocket-соединение -
метод
receive_text,
который принимает текстовое сообщение от клиента -
метод
send_text,
который отправляет текстовое сообщение клиенту