Статус WS_1000_NORMAL_CLOSURE
Статус WS_1000_NORMAL_CLOSURE используется при закрытии WebSocket-соединения
для указания того, что соединение было закрыто штатно, без ошибок.
Этот код закрытия является значением по умолчанию и передаётся первым аргументом
в метод close объекта WebSocket.
Он сигнализирует клиенту, что сервер завершил работу корректно.
Синтаксис
from fastapi import WebSocket
await websocket.close(code=1000)
Пример
Давайте создадим WebSocket-маршрут, который принимает сообщения
и закрывает соединение с кодом 1000 при получении команды 'close':
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_text()
if data == 'close':
await websocket.close(code=1000)
break
await websocket.send_text(f'echo: {data}')
Запустим сервер:
uvicorn main:app --reload
Клиент отправляет сообщение 'hello' и получает ответ:
"echo: hello"
После отправки 'close' соединение закрывается с кодом 1000.
Пример
Давайте явно укажем статус WS_1000_NORMAL_CLOSURE
через константу из модуля starlette.status:
Клиент отправляет 'abcde' и получает ответ:
"received: abcde"
Затем соединение закрывается с кодом 1000.
Смотрите также
-
статус
WS_1008_POLICY_VIOLATION,
который обозначает нарушение политики WebSocket-соединения -
статус
HTTP_200_OK,
который обозначает успешный HTTP-ответ -
статус
HTTP_500_INTERNAL_SERVER_ERROR,
который обозначает внутреннюю ошибку сервера -
модуль
status,
который содержит все статусы HTTP и WebSocket