def receive(self, text_data): text_data_json = json.loads(text_data) message_type = text_data_json['type'] user_json = text_data_json['user'] user = User.objects.get(username=user_json['username'], password=user_json['password'], first_name=user_json['first_name'], last_name=user_json['last_name'], email=user_json['email']) channel_name = self.room_name channel = Channel.objects.get(channel_name=channel_name) if message_type == 'message_channel': message = text_data_json['message'] print("User: {}".format(user)) print("Message: {}".format(message)) print("Channel: {}".format(channel_name)) message_obj = Message() message_obj.channel = channel message_obj.user = user message_obj.message = message message_obj.save() serializer = MessageSerializer(message_obj) # Send message to room group async_to_sync(self.channel_layer.group_send)( self.room_group_name, { 'type': 'broadcast', 'event': message_type, 'message': serializer.data, 'user': user_json, 'channel_name': channel_name }) elif message_type == 'join_channel': if not user in channel.users.all(): channel.users.add(user) channel.save() async_to_sync(self.channel_layer.group_send)( self.room_group_name, { 'type': 'broadcast', 'event': message_type, 'channel_name': channel_name, 'user': user_json }) elif message_type == 'change_topic': async_to_sync(self.channel_layer.group_send)( self.room_group_name, { 'type': 'broadcast', 'event': message_type, 'channel_name': channel_name, 'user': user_json }) elif message_type == 'leave_channel': if user in channel.users.all(): channel.users.remove(user) channel.save() async_to_sync(self.channel_layer.group_send)( self.room_group_name, { 'type': 'broadcast', 'event': message_type, 'channel_name': channel_name, 'user': user_json }) elif message_type == 'delete_channel': if channel.creator == user: for group in self.groups: async_to_sync(self.channel_layer.group_send)( group, { 'type': 'broadcast', 'event': message_type, 'channel_name': channel_name, 'user': user_json }) self.groups.remove('chat_%s' % channel.channel_name.replace(" ", "_")) channel.delete() elif message_type == 'add_channel': channel_n = text_data_json['channel_name'] print("Channel: {}".format(channel_n)) print("Groups: {}".format(self.groups)) for group in self.groups: async_to_sync(self.channel_layer.group_send)(group, { 'type': 'broadcast', 'event': message_type, 'channel_name': channel_name, 'user': user_json }) if not 'chat_%s' % channel_n.replace(" ", "_") in self.groups: self.groups.append('chat_%s' % channel_n.replace(" ", "_")) print(self.groups)