Статус WS_1008_POLICY_VIOLATION
Статус WS_1008_POLICY_VIOLATION представляет собой
константу кода закрытия WebSocket-соединения.
Она применяется в обработчиках WebSocket
для информирования клиента о том,
что соединение закрывается из-за нарушения
установленной политики сервера.
Чаще всего статус используется при
неудачной аутентификации, отсутствии прав
или при получении недопустимых данных.
Константа доступна из модуля fastapi.status
и имеет числовое значение 1008.
Передаётся она в метод close
объекта WebSocket вместе с необязательным
пояснительным сообщением.
Синтаксис
from fastapi import status
status.WS_1008_POLICY_VIOLATION
Пример
Давайте создадим WebSocket-маршрут,
который закрывает соединение со статусом
WS_1008_POLICY_VIOLATION при
неверном токене:
from fastapi import FastAPI, WebSocket
from fastapi import status
app = FastAPI()
@app.websocket('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
token = await websocket.receive_text()
if token != 'abcde':
await websocket.close(
code=status.WS_1008_POLICY_VIOLATION,
reason='invalid token'
)
return
await websocket.send_text('hello')
При подключении клиента к адресу /ws
и отправке строки 'wrong' сервер
закроет соединение с кодом 1008
и причиной 'invalid token'.
Клиент получит соответствующее уведомление
о нарушении политики.
Пример
Давайте проверим числовое значение константы:
from fastapi import status
print(status.WS_1008_POLICY_VIOLATION)
Результат выполнения кода:
1008
Пример
Давайте закроем соединение без указания причины:
from fastapi import FastAPI, WebSocket
from fastapi import status
app = FastAPI()
@app.websocket('/chat')
async def chat(websocket: WebSocket):
await websocket.accept()
await websocket.close(
code=status.WS_1008_POLICY_VIOLATION
)
В этом случае клиент получит только код
закрытия 1008 без текстового
пояснения.
Смотрите также
-
статус
WS_1000_NORMAL_CLOSURE,
который сигнализирует о нормальном закрытии WebSocket-соединения -
статус
HTTP_401_UNAUTHORIZED,
который возвращается при неудачной аутентификации HTTP-запроса -
статус
HTTP_403_FORBIDDEN,
который возвращается при отсутствии прав доступа -
модуль
status,
который содержит все коды статусов HTTP и WebSocket