mirror of
https://github.com/django/daphne.git
synced 2025-07-10 08:02:16 +03:00
Update ASGI spec with backpressure instructions
This commit is contained in:
parent
e947e331ce
commit
69168545d4
|
@ -507,7 +507,9 @@ the response ``headers`` must be sent as a list of tuples, which matches WSGI.
|
||||||
Request
|
Request
|
||||||
'''''''
|
'''''''
|
||||||
|
|
||||||
Sent once for each request that comes into the protocol server.
|
Sent once for each request that comes into the protocol server. If sending
|
||||||
|
this raises ``ChannelFull``, the interface server must respond with a
|
||||||
|
500-range error, preferably ``503 Service Unavailable``, and close the connection.
|
||||||
|
|
||||||
Channel: ``http.request``
|
Channel: ``http.request``
|
||||||
|
|
||||||
|
@ -561,7 +563,10 @@ Keys:
|
||||||
Request Body Chunk
|
Request Body Chunk
|
||||||
''''''''''''''''''
|
''''''''''''''''''
|
||||||
|
|
||||||
Must be sent after an initial Response.
|
Must be sent after an initial Response. If trying to send this raises
|
||||||
|
``ChannelFull``, the interface server should wait and try again until it is
|
||||||
|
accepted (the consumer at the other end of the channel may not be as fast
|
||||||
|
consuming the data as the client is at sending it).
|
||||||
|
|
||||||
Channel: ``http.request.body?``
|
Channel: ``http.request.body?``
|
||||||
|
|
||||||
|
@ -584,7 +589,9 @@ Keys:
|
||||||
Response
|
Response
|
||||||
''''''''
|
''''''''
|
||||||
|
|
||||||
Send after any server pushes, and before any response chunks.
|
Send after any server pushes, and before any response chunks. If ``ChannelFull``
|
||||||
|
is encountered, wait and try again later, optionally giving up after a
|
||||||
|
predetermined timeout.
|
||||||
|
|
||||||
Channel: ``http.response!``
|
Channel: ``http.response!``
|
||||||
|
|
||||||
|
@ -609,7 +616,8 @@ Keys:
|
||||||
Response Chunk
|
Response Chunk
|
||||||
''''''''''''''
|
''''''''''''''
|
||||||
|
|
||||||
Must be sent after an initial Response.
|
Must be sent after an initial Response. If ``ChannelFull``
|
||||||
|
is encountered, wait and try again later.
|
||||||
|
|
||||||
Channel: ``http.response!``
|
Channel: ``http.response!``
|
||||||
|
|
||||||
|
@ -627,7 +635,10 @@ Keys:
|
||||||
Server Push
|
Server Push
|
||||||
'''''''''''
|
'''''''''''
|
||||||
|
|
||||||
Must be sent before any Response or Response Chunk messages.
|
Must be sent before any Response or Response Chunk messages. If ``ChannelFull``
|
||||||
|
is encountered, wait and try again later, optionally giving up after a
|
||||||
|
predetermined timeout, and give up on the entire response this push is
|
||||||
|
connected to.
|
||||||
|
|
||||||
When a server receives this message, it must treat the Request message in the
|
When a server receives this message, it must treat the Request message in the
|
||||||
``request`` field of the Server Push as though it were a new HTTP request being
|
``request`` field of the Server Push as though it were a new HTTP request being
|
||||||
|
@ -664,6 +675,9 @@ Sent when a HTTP connection is closed. This is mainly useful for long-polling,
|
||||||
where you may have added the response channel to a Group or other set of
|
where you may have added the response channel to a Group or other set of
|
||||||
channels you want to trigger a reply to when data arrives.
|
channels you want to trigger a reply to when data arrives.
|
||||||
|
|
||||||
|
If ``ChannelFull`` is raised, then give up attempting to send the message;
|
||||||
|
consumption is not required.
|
||||||
|
|
||||||
Channel: ``http.disconnect``
|
Channel: ``http.disconnect``
|
||||||
|
|
||||||
Keys:
|
Keys:
|
||||||
|
@ -683,12 +697,18 @@ should store them in a cache or database.
|
||||||
WebSocket protocol servers should handle PING/PONG requests themselves, and
|
WebSocket protocol servers should handle PING/PONG requests themselves, and
|
||||||
send PING frames as necessary to ensure the connection is alive.
|
send PING frames as necessary to ensure the connection is alive.
|
||||||
|
|
||||||
|
Note that you **must** ensure that websocket.connect is consumed; if an
|
||||||
|
interface server gets ``ChannelFull`` on this channel it will drop the
|
||||||
|
connection. Django Channels ships with a no-op consumer attached by default;
|
||||||
|
we recommend other implementations do the same.
|
||||||
|
|
||||||
|
|
||||||
Connection
|
Connection
|
||||||
''''''''''
|
''''''''''
|
||||||
|
|
||||||
Sent when the client initially opens a connection and completes the
|
Sent when the client initially opens a connection and completes the
|
||||||
WebSocket handshake.
|
WebSocket handshake. If sending this raises ``ChannelFull``, the interface
|
||||||
|
server must drop the WebSocket connection and send no more messages about it.
|
||||||
|
|
||||||
Channel: ``websocket.connect``
|
Channel: ``websocket.connect``
|
||||||
|
|
||||||
|
@ -728,7 +748,8 @@ Keys:
|
||||||
Receive
|
Receive
|
||||||
'''''''
|
'''''''
|
||||||
|
|
||||||
Sent when a data frame is received from the client.
|
Sent when a data frame is received from the client. If ``ChannelFull`` is
|
||||||
|
raised, wait and try again.
|
||||||
|
|
||||||
Channel: ``websocket.receive``
|
Channel: ``websocket.receive``
|
||||||
|
|
||||||
|
@ -755,6 +776,9 @@ Sent when either connection to the client is lost, either from the client
|
||||||
closing the connection, the server closing the connection, or loss of the
|
closing the connection, the server closing the connection, or loss of the
|
||||||
socket.
|
socket.
|
||||||
|
|
||||||
|
If ``ChannelFull`` is raised, then give up attempting to send the message;
|
||||||
|
consumption is not required.
|
||||||
|
|
||||||
Channel: ``websocket.disconnect``
|
Channel: ``websocket.disconnect``
|
||||||
|
|
||||||
Keys:
|
Keys:
|
||||||
|
@ -773,7 +797,7 @@ Send/Close
|
||||||
''''''''''
|
''''''''''
|
||||||
|
|
||||||
Sends a data frame to the client and/or closes the connection from the
|
Sends a data frame to the client and/or closes the connection from the
|
||||||
server end.
|
server end. If ``ChannelFull`` is raised, wait and try again.
|
||||||
|
|
||||||
Channel: ``websocket.send!``
|
Channel: ``websocket.send!``
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user