def __init__(self, client_conn, server_conn, handshake_flow, live=None): super().__init__("websocket", client_conn, server_conn, live) self.messages: List[WebSocketMessage] = [] """A list containing all WebSocketMessage's.""" self.close_sender = 'client' """'client' if the client initiated connection closing.""" self.close_code = CloseReason.NORMAL_CLOSURE """WebSocket close code.""" self.close_message = '(message missing)' """WebSocket close message.""" self.close_reason = 'unknown status code' """WebSocket close reason.""" self.stream = False """True of this connection is streaming directly to the other endpoint.""" self.handshake_flow = handshake_flow """The HTTP flow containing the initial WebSocket handshake.""" self.ended = False """True when the WebSocket connection has been closed.""" self._inject_messages_client = queue.Queue(maxsize=1) self._inject_messages_server = queue.Queue(maxsize=1) if handshake_flow: self.client_key = websocket.get_client_key( handshake_flow.request.headers) self.client_protocol = websocket.get_protocol( handshake_flow.request.headers) self.client_extensions = websocket.get_extensions( handshake_flow.request.headers) self.server_accept = websocket.get_server_accept( handshake_flow.response.headers) self.server_protocol = websocket.get_protocol( handshake_flow.response.headers) self.server_extensions = websocket.get_extensions( handshake_flow.response.headers) else: self.client_key = '' self.client_protocol = '' self.client_extensions = '' self.server_accept = '' self.server_protocol = '' self.server_extensions = ''
def test_get_protocol(): assert websocket.get_protocol({}) is None assert websocket.get_protocol({"sec-websocket-protocol": "foo"}) == "foo"