← Back
Editing: server.cpython-311.pyc
� �=Xc � � �" � d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl Z d dlmZ d dl mZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZmZm Z ddl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( dd l)m*Z*m+Z+ dd l,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2 ddlm3Z3 dd l m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z< ddlm=Z= ddl>m?Z? g d�Z@eeeeAegef f ZBeejC eeDf ZE G d� de?� � ZF G d� d� � ZG G d� d� � ZHeHZI d$d%d!�ZJd&d#�ZKdS )'� )�annotationsN)� TracebackType) �Any� Awaitable�Callable� Generator�Iterable�List�Optional�Sequence�Set�Tuple�Type�Union�cast� )�State)�Headers�HeadersLike�MultipleValuesError)�AbortHandshake�InvalidHandshake� InvalidHeader�InvalidMessage� InvalidOrigin�InvalidUpgrade�NegotiationError)� Extension�ServerExtensionFactory)� enable_server_permessage_deflate)�build_extension�parse_extension�parse_subprotocol�validate_subprotocols)� USER_AGENT)�ExtensionHeader� LoggerLike�Origin�Subprotocol� )�loop_if_py_lt_38)�build_response� check_request)�read_request)�WebSocketCommonProtocol)�serve� unix_serve�WebSocketServerProtocol�WebSocketServerc �� � � e Zd ZdZdZdZdddddeddd�d>� fd�Zd?� fd!�Zd@d"�Z dAd$�Z dBdCd+�ZdDd0�Ze dBdEd2�� � Ze dFd5�� � ZdGd8�ZdHd<�Z dIdJd=�Z� xZS )Kr2 az WebSocket server connection. :class:`WebSocketServerProtocol` provides :meth:`recv` and :meth:`send` coroutines for receiving and sending messages. It supports asynchronous iteration to receive messages:: async for message in websocket: await process(message) The iterator exits normally when the connection is closed with close code 1000 (OK) or 1001 (going away). It raises a :exc:`~websockets.exceptions.ConnectionClosedError` when the connection is closed with any other code. You may customize the opening handshake in a subclass by overriding :meth:`process_request` or :meth:`select_subprotocol`. Args: ws_server: WebSocket server that created this connection. See :func:`serve` for the documentation of ``ws_handler``, ``logger``, ``origins``, ``extensions``, ``subprotocols``, ``extra_headers``, and ``server_header``. See :class:`~websockets.legacy.protocol.WebSocketCommonProtocol` for the documentation of ``ping_interval``, ``ping_timeout``, ``close_timeout``, ``max_size``, ``max_queue``, ``read_limit``, and ``write_limit``. F�serverN)�logger�origins� extensions�subprotocols� extra_headers� server_header�process_request�select_subprotocol� ws_handler�tUnion[Callable[[WebSocketServerProtocol], Awaitable[Any]], Callable[[WebSocketServerProtocol, str], Awaitable[Any]]]� ws_serverr3 r6 �Optional[LoggerLike]r7 �$Optional[Sequence[Optional[Origin]]]r8 �*Optional[Sequence[ServerExtensionFactory]]r9 �Optional[Sequence[Subprotocol]]r: �Optional[HeadersLikeOrCallable]r; � Optional[str]r<