from channels import Group
from channels.auth import channel_session_user, channel_session_user_from_http


@channel_session_user_from_http
def ws_connect(message):

    Group('btc-price').add(message.reply_channel)

    message.reply_channel.send({
        'accept': True
    })


@channel_session_user
def ws_disconnect(message):
    Group('btc-price').discard(message.reply_channel)

import json

from channels import Group
from channels.auth import channel_session_user


@channel_session_user
def ws_connect(message):
    Group('btc-price').add(message.reply_channel)

    message.channel_session['coin-group'] = 'btc-price'

    message.reply_channel.send({
        'accept': True
    })


@channel_session_user
def ws_receive(message):
    data = json.loads(message.content.get('text'))

    if data.get('coin') == 'litecoin':
        Group('ltc-price').add(message.reply_channel)
        Group('btc-price').discard(message.reply_channel)

        message.channel_session['coin-group'] = 'ltc-price'

    elif data.get('coin') == 'bitcoin':
        Group('btc-price').add(message.reply_channel)
        Group('ltc-price').discard(message.reply_channel)

        message.channel_session['coin-group'] = 'btc-price'


@channel_session_user
def ws_disconnect(message):
    user_group = message.channel_session['coin-group']

    Group(user_group).discard(message.reply_channel)

Add ws_receive consumer with channel_session_user decorator
Add ws_receive consumer with channel_session_user decorator

+ import json
+ 
  from channels import Group
- from channels.auth import channel_session_user, channel_session_user_from_http
+ from channels.auth import channel_session_user
  
  
- @channel_session_user_from_http
+ @channel_session_user
  def ws_connect(message):
+     Group('btc-price').add(message.reply_channel)
  
-     Group('btc-price').add(message.reply_channel)
+     message.channel_session['coin-group'] = 'btc-price'
  
      message.reply_channel.send({
          'accept': True
      })
  
  
  @channel_session_user
+ def ws_receive(message):
+     data = json.loads(message.content.get('text'))
+ 
+     if data.get('coin') == 'litecoin':
+         Group('ltc-price').add(message.reply_channel)
+         Group('btc-price').discard(message.reply_channel)
+ 
+         message.channel_session['coin-group'] = 'ltc-price'
+ 
+     elif data.get('coin') == 'bitcoin':
+         Group('btc-price').add(message.reply_channel)
+         Group('ltc-price').discard(message.reply_channel)
+ 
+         message.channel_session['coin-group'] = 'btc-price'
+ 
+ 
+ @channel_session_user
  def ws_disconnect(message):
-     Group('btc-price').discard(message.reply_channel)
+     user_group = message.channel_session['coin-group']
  
+     Group(user_group).discard(message.reply_channel)
+ 
Add ws_receive consumer with channel_session_user decorator
## Code Before:
from channels import Group
from channels.auth import channel_session_user, channel_session_user_from_http


@channel_session_user_from_http
def ws_connect(message):

    Group('btc-price').add(message.reply_channel)

    message.reply_channel.send({
        'accept': True
    })


@channel_session_user
def ws_disconnect(message):
    Group('btc-price').discard(message.reply_channel)

## Instruction:
Add ws_receive consumer with channel_session_user decorator
## Code After:
import json

from channels import Group
from channels.auth import channel_session_user


@channel_session_user
def ws_connect(message):
    Group('btc-price').add(message.reply_channel)

    message.channel_session['coin-group'] = 'btc-price'

    message.reply_channel.send({
        'accept': True
    })


@channel_session_user
def ws_receive(message):
    data = json.loads(message.content.get('text'))

    if data.get('coin') == 'litecoin':
        Group('ltc-price').add(message.reply_channel)
        Group('btc-price').discard(message.reply_channel)

        message.channel_session['coin-group'] = 'ltc-price'

    elif data.get('coin') == 'bitcoin':
        Group('btc-price').add(message.reply_channel)
        Group('ltc-price').discard(message.reply_channel)

        message.channel_session['coin-group'] = 'btc-price'


@channel_session_user
def ws_disconnect(message):
    user_group = message.channel_session['coin-group']

    Group(user_group).discard(message.reply_channel)
