MCPcopy Index your code
hub / github.com/python-websockets/websockets / handshake

Method handshake

src/websockets/sync/server.py:109–189  ·  view source on GitHub ↗

Perform the opening handshake.

(
        self,
        process_request: (
            Callable[
                [ServerConnection, Request],
                Response | None,
            ]
            | None
        ) = None,
        process_response: (
            Callable[
                [ServerConnection, Request, Response],
                Response | None,
            ]
            | None
        ) = None,
        server_header: str | None = SERVER,
        timeout: float | None = None,
    )

Source from the content-addressed store, hash-verified

107 return self.protocol.reject(status, text)
108
109 def handshake(
110 self,
111 process_request: (
112 Callable[
113 [ServerConnection, Request],
114 Response | None,
115 ]
116 | None
117 ) = None,
118 process_response: (
119 Callable[
120 [ServerConnection, Request, Response],
121 Response | None,
122 ]
123 | None
124 ) = None,
125 server_header: str | None = SERVER,
126 timeout: float | None = None,
127 ) -> None:
128 """
129 Perform the opening handshake.
130
131 """
132 if not self.request_rcvd.wait(timeout):
133 raise TimeoutError("timed out while waiting for handshake request")
134
135 if self.request is not None:
136 with self.send_context(expected_state=CONNECTING):
137 response = None
138
139 if process_request is not None:
140 try:
141 response = process_request(self, self.request)
142 except Exception as exc:
143 self.protocol.handshake_exc = exc
144 response = self.protocol.reject(
145 http.HTTPStatus.INTERNAL_SERVER_ERROR,
146 (
147 "Failed to open a WebSocket connection.\n"
148 "See server log for more information.\n"
149 ),
150 )
151
152 if response is None:
153 self.response = self.protocol.accept(self.request)
154 else:
155 self.response = response
156
157 if server_header:
158 self.response.headers["Server"] = server_header
159
160 response = None
161
162 if process_response is not None:
163 try:
164 response = process_response(self, self.request, self.response)
165 except Exception as exc:
166 self.protocol.handshake_exc = exc

Callers 1

conn_handlerFunction · 0.45

Calls 5

acceptMethod · 0.80
send_responseMethod · 0.80
process_requestFunction · 0.70
send_contextMethod · 0.45
rejectMethod · 0.45

Tested by

no test coverage detected