28
28
from ..websocket import WebsocketFrame , websocketOpcodes
29
29
from ..parser import HttpParser , httpParserTypes
30
30
from ..protocols import httpProtocols
31
- from ..responses import NOT_FOUND_RESPONSE_PKT , NOT_IMPLEMENTED_RESPONSE_PKT , okResponse
31
+ from ..responses import NOT_FOUND_RESPONSE_PKT , okResponse
32
32
33
33
from .plugin import HttpWebServerBasePlugin
34
34
from .protocols import httpProtocolTypes
@@ -138,25 +138,17 @@ def read_and_build_static_file_response(path: str) -> memoryview:
138
138
except FileNotFoundError :
139
139
return NOT_FOUND_RESPONSE_PKT
140
140
141
- def try_upgrade (self ) -> bool :
142
- if self .request .has_header (b'connection' ) and \
143
- self .request .header (b'connection' ).lower () == b'upgrade' :
144
- if self .request .has_header (b'upgrade' ) and \
145
- self .request .header (b'upgrade' ).lower () == b'websocket' :
146
- self .client .queue (
147
- memoryview (
148
- build_websocket_handshake_response (
149
- WebsocketFrame .key_to_accept (
150
- self .request .header (b'Sec-WebSocket-Key' ),
151
- ),
152
- ),
141
+ def switch_to_websocket (self ) -> None :
142
+ self .client .queue (
143
+ memoryview (
144
+ build_websocket_handshake_response (
145
+ WebsocketFrame .key_to_accept (
146
+ self .request .header (b'Sec-WebSocket-Key' ),
153
147
),
154
- )
155
- self .switched_protocol = httpProtocolTypes .WEBSOCKET
156
- else :
157
- self .client .queue (NOT_IMPLEMENTED_RESPONSE_PKT )
158
- return True
159
- return False
148
+ ),
149
+ ),
150
+ )
151
+ self .switched_protocol = httpProtocolTypes .WEBSOCKET
160
152
161
153
def on_request_complete (self ) -> Union [socket .socket , bool ]:
162
154
path = self .request .path or b'/'
@@ -178,11 +170,8 @@ def on_request_complete(self) -> Union[socket.socket, bool]:
178
170
if route .match (text_ (path )):
179
171
self .route = self .routes [httpProtocolTypes .WEBSOCKET ][route ]
180
172
# Connection upgrade
181
- teardown = self .try_upgrade ()
182
- if teardown :
183
- return True
184
- # For upgraded connections, nothing more to do
185
- if self .switched_protocol :
173
+ if self .request .is_websocket_upgrade :
174
+ self .switch_to_websocket ()
186
175
# Invoke plugin.on_websocket_open
187
176
assert self .route
188
177
self .route .on_websocket_open ()
0 commit comments