On Tue, Dec 20, 2016 at 2:00 PM, Kakar Nyori <nyorika...@gmail.com> wrote:

> I am trying to grasp the concept of persistant data in django channels
> <https://channels.readthedocs.io/en/stable/getting-started.html#persisting-data>.
> I have searched the reference and other parts but didn't clear my
> confusion. I would really appreciate if you help me understand better.
>
> consumers.py:
>
> @channel_sessiondef ws_connect(message):
>     # Work out room name from path (ignore slashes)
>     room = message.content['path'].strip("/")
>     # Save room in session and add us to the group
>     message.channel_session['room'] = room
>     Group("chat-%s" % room).add(message.reply_channel)
>
> Q.1 In the above line message.channel_session['room'], is the room another
> property of the message? Like it tells which session the message belongs to?
>
channel_session is like a normal session in that you can assign to anything
- here, it just assigns to a key called `room`. There's nothing special
about it, it's just a string that was decoded from the path. It could have
been called `room_name`, for example, if the other code was updated to
match.


> @channel_sessiondef ws_message(message):
>     Group("chat-%s" % message.channel_session['room']).send({
>         "text": message['text'],
>     })
>
> Q2. In the line Group("chat-%s" % message.channel_session['room']).send({,
> why are we not using the *room* variable like in the ws_connect() function,
> but instead we are using the channels_session?
>

The `room` variable is out of scope now - this is a different function,
potentially running on a different server, so you have to use the session
to persist data (such as room).


> @channel_sessiondef ws_disconnect(message):
>     Group("chat-%s" % 
> message.channel_session['room']).discard(message.reply_channel)
>
> Q3. Same like above, why are we not using the *room* variable to discard
> from the group? Also is it not neccesary to remove the room from the
> session?
>

See my answer to Q2, and no, sessions are cleaned up like HTTP sessions are.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAFwN1ur2VLkxnT1jMbXmK1Y8UWN-7zm-Cio7CGT0h6b3e80Cmw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to