MCPcopy Create free account
hub / github.com/EasyIME/PIME / _accept_connection

Method _accept_connection

python/python3/tornado/websocket.py:901–950  ·  view source on GitHub ↗
(self, handler: WebSocketHandler)

Source from the content-addressed store, hash-verified

899 )
900
901 async def _accept_connection(self, handler: WebSocketHandler) -> None:
902 subprotocol_header = handler.request.headers.get("Sec-WebSocket-Protocol")
903 if subprotocol_header:
904 subprotocols = [s.strip() for s in subprotocol_header.split(",")]
905 else:
906 subprotocols = []
907 self.selected_subprotocol = handler.select_subprotocol(subprotocols)
908 if self.selected_subprotocol:
909 assert self.selected_subprotocol in subprotocols
910 handler.set_header("Sec-WebSocket-Protocol", self.selected_subprotocol)
911
912 extensions = self._parse_extensions_header(handler.request.headers)
913 for ext in extensions:
914 if ext[0] == "permessage-deflate" and self._compression_options is not None:
915 # TODO: negotiate parameters if compression_options
916 # specifies limits.
917 self._create_compressors("server", ext[1], self._compression_options)
918 if (
919 "client_max_window_bits" in ext[1]
920 and ext[1]["client_max_window_bits"] is None
921 ):
922 # Don't echo an offered client_max_window_bits
923 # parameter with no value.
924 del ext[1]["client_max_window_bits"]
925 handler.set_header(
926 "Sec-WebSocket-Extensions",
927 httputil._encode_header("permessage-deflate", ext[1]),
928 )
929 break
930
931 handler.clear_header("Content-Type")
932 handler.set_status(101)
933 handler.set_header("Upgrade", "websocket")
934 handler.set_header("Connection", "Upgrade")
935 handler.set_header("Sec-WebSocket-Accept", self._challenge_response(handler))
936 handler.finish()
937
938 self.stream = handler._detach_stream()
939
940 self.start_pinging()
941 try:
942 open_result = handler.open(*handler.open_args, **handler.open_kwargs)
943 if open_result is not None:
944 await open_result
945 except Exception:
946 handler.log_exception(*sys.exc_info())
947 self._abort()
948 return
949
950 await self._receive_frame_loop()
951
952 def _parse_extensions_header(
953 self, headers: httputil.HTTPHeaders

Callers 1

accept_connectionMethod · 0.95

Calls 15

_create_compressorsMethod · 0.95
_challenge_responseMethod · 0.95
start_pingingMethod · 0.95
_receive_frame_loopMethod · 0.95
splitMethod · 0.80
set_headerMethod · 0.80
clear_headerMethod · 0.80
set_statusMethod · 0.80
_detach_streamMethod · 0.80
_abortMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected