mirror of
https://github.com/django/daphne.git
synced 2025-07-09 15:42:24 +03:00
Expand more on accepting connections
This commit is contained in:
parent
13c1fcb654
commit
cad63451f8
|
@ -235,6 +235,8 @@ abstraction as a core concept called Groups::
|
||||||
def ws_connect(message):
|
def ws_connect(message):
|
||||||
# Add to reader group
|
# Add to reader group
|
||||||
Group("liveblog").add(message.reply_channel)
|
Group("liveblog").add(message.reply_channel)
|
||||||
|
# Accept the connection request
|
||||||
|
message.reply_channel.send({"accept": True})
|
||||||
|
|
||||||
# Connected to websocket.disconnect
|
# Connected to websocket.disconnect
|
||||||
def ws_disconnect(message):
|
def ws_disconnect(message):
|
||||||
|
|
|
@ -165,13 +165,20 @@ disconnect, like this::
|
||||||
|
|
||||||
# Connected to websocket.connect
|
# Connected to websocket.connect
|
||||||
def ws_add(message):
|
def ws_add(message):
|
||||||
|
# Accept the incoming connection
|
||||||
message.reply_channel.send({"accept": True})
|
message.reply_channel.send({"accept": True})
|
||||||
|
# Add them to the chat group
|
||||||
Group("chat").add(message.reply_channel)
|
Group("chat").add(message.reply_channel)
|
||||||
|
|
||||||
# Connected to websocket.disconnect
|
# Connected to websocket.disconnect
|
||||||
def ws_disconnect(message):
|
def ws_disconnect(message):
|
||||||
Group("chat").discard(message.reply_channel)
|
Group("chat").discard(message.reply_channel)
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
You need to explicitly accept WebSocket connections if you override connect
|
||||||
|
by sending ``accept: True`` - you can also reject them at connection time,
|
||||||
|
before they open, by sending ``close: True``.
|
||||||
|
|
||||||
Of course, if you've read through :doc:`concepts`, you'll know that channels
|
Of course, if you've read through :doc:`concepts`, you'll know that channels
|
||||||
added to groups expire out if their messages expire (every channel layer has
|
added to groups expire out if their messages expire (every channel layer has
|
||||||
a message expiry time, usually between 30 seconds and a few minutes, and it's
|
a message expiry time, usually between 30 seconds and a few minutes, and it's
|
||||||
|
@ -204,7 +211,9 @@ get the message. Here's all the code::
|
||||||
|
|
||||||
# Connected to websocket.connect
|
# Connected to websocket.connect
|
||||||
def ws_add(message):
|
def ws_add(message):
|
||||||
|
# Accept the connection
|
||||||
message.reply_channel.send({"accept": True})
|
message.reply_channel.send({"accept": True})
|
||||||
|
# Add to the chat group
|
||||||
Group("chat").add(message.reply_channel)
|
Group("chat").add(message.reply_channel)
|
||||||
|
|
||||||
# Connected to websocket.receive
|
# Connected to websocket.receive
|
||||||
|
@ -559,6 +568,8 @@ consumer above to use a room based on URL rather than username::
|
||||||
def ws_add(message, room):
|
def ws_add(message, room):
|
||||||
# Add them to the right group
|
# Add them to the right group
|
||||||
Group("chat-%s" % room).add(message.reply_channel)
|
Group("chat-%s" % room).add(message.reply_channel)
|
||||||
|
# Accept the connection request
|
||||||
|
message.reply_channel.send({"accept": True})
|
||||||
|
|
||||||
In the next section, we'll change to sending the ``room`` as a part of the
|
In the next section, we'll change to sending the ``room`` as a part of the
|
||||||
WebSocket message - which you might do if you had a multiplexing client -
|
WebSocket message - which you might do if you had a multiplexing client -
|
||||||
|
|
Loading…
Reference in New Issue
Block a user