MCPcopy
hub / github.com/aio-libs/aiohttp / WebSocketResponse

Class WebSocketResponse

aiohttp/web_ws.py:20–301  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18
19
20class WebSocketResponse(StreamResponse):
21
22 def __init__(self, *,
23 timeout=10.0, autoclose=True, autoping=True, protocols=()):
24 super().__init__(status=101)
25 self._protocols = protocols
26 self._protocol = None
27 self._writer = None
28 self._reader = None
29 self._closed = False
30 self._closing = False
31 self._conn_lost = 0
32 self._close_code = None
33 self._loop = None
34 self._waiting = False
35 self._exception = None
36 self._timeout = timeout
37 self._autoclose = autoclose
38 self._autoping = autoping
39
40 @asyncio.coroutine
41 def prepare(self, request):
42 # make pre-check to don't hide it by do_handshake() exceptions
43 resp_impl = self._start_pre_check(request)
44 if resp_impl is not None:
45 return resp_impl
46
47 parser, protocol, writer = self._pre_start(request)
48 resp_impl = yield from super().prepare(request)
49 self._post_start(request, parser, protocol, writer)
50 return resp_impl
51
52 def _pre_start(self, request):
53 try:
54 status, headers, parser, writer, protocol = do_handshake(
55 request.method, request.headers, request.transport,
56 self._protocols)
57 except HttpProcessingError as err:
58 if err.code == 405:
59 raise HTTPMethodNotAllowed(
60 request.method, [hdrs.METH_GET], body=b'')
61 elif err.code == 400:
62 raise HTTPBadRequest(text=err.message, headers=err.headers)
63 else: # pragma: no cover
64 raise HTTPInternalServerError() from err
65
66 if self.status != status:
67 self.set_status(status)
68 for k, v in headers:
69 self.headers[k] = v
70 self.force_close()
71 return parser, protocol, writer
72
73 def _post_start(self, request, parser, protocol, writer):
74 self._reader = request._reader.set_parser(parser)
75 self._writer = writer
76 self._protocol = protocol
77 self._loop = request.app.loop

Callers 15

test_nonstarted_pingMethod · 0.90
test_nonstarted_pongMethod · 0.90
test_nonstarted_closeMethod · 0.90
goMethod · 0.90
test_writeMethod · 0.90
test_can_prepare_okMethod · 0.90

Calls

no outgoing calls

Tested by 15

test_nonstarted_pingMethod · 0.72
test_nonstarted_pongMethod · 0.72
test_nonstarted_closeMethod · 0.72
goMethod · 0.72
test_writeMethod · 0.72
test_can_prepare_okMethod · 0.72