class AllEventConsumer(WebsocketConsumer):
def connect(self):
self.room_name = str(self.scope['url_route']['kwargs']['user_id'])
self.room_group_name = 'all_event_'+self.room_name
print('connect')
print(self.room_group_name)
async_to_sync(self.channel_layer.group_add(
self.room_group_name,
self.room_name
))
async_to_sync(self.channel_layer.group_send(
self.room_group_name , {
'type': 'update.list',
'value': 'Value'
}
))
self.accept()
event = Synopsis_Event.give_all_events(self.room_name)
self.send(text_data=json.dumps({
'room_id': self.room_group_name,
'payload': event
}))
def update_list(self, event):
print('inside update_list')
print(event)
data = json.loads(event['value'])
self.send(text_data=json.dumps({
'payload': data
}))
def disconnect(self, close_code):
async_to_sync(self.channel_layer.group_discard)(
self.room_name, self.room_group_name
)
self.disconnect(close_code)
def receive(self, text_data=None, bytes_data = None):
print('DEF')
print(type(json.loads(text_data)))
async_to_sync(self.channel_layer.group_send)(
self.room_group_name , {
"type": "update.list",
"value": text_data
}
)
Here is my code i wrote group_send out of consumers it was not working so i added it to connect just for testing is it triggered. but it's not working
Tried with Django channels documentation no changes in code.
Here is how i got my answer. we cannot create custom channel name so i created group with existing channel name
class AllEventConsumer(WebsocketConsumer):
def connect(self):
self.room_name = str(self.scope['url_route']['kwargs']['user_id'])
self.room_group_name = 'all_event_'+self.room_name
print('connect')
print(self.channel_name)
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
temp_data = {
'type': 'update_list',
'value': 'Value'
}
async_to_sync(self.accept())
async_to_sync(self.channel_layer.group_send)(
self.room_group_name ,
temp_data
)
event = Synopsis_Event.give_all_events(self.room_name)
self.send(text_data=json.dumps({
'room_id': self.room_group_name,
'payload': event
}))
def update_list(self, event):
print('inside update_list')
print(event)
# data = json.loads(event['value'])
self.send(text_data=json.dumps({
'payload': event
}))
def disconnect(self, close_code):
async_to_sync(self.channel_layer.group_discard)(
self.room_name, self.room_group_name
)
self.disconnect(close_code)
def receive(self, text_data=None, bytes_data = None):
print('DEF')
print(type(json.loads(text_data)))
async_to_sync(self.channel_layer.group_send)(
self.room_group_name , {
"type": "update.list",
"value": text_data
}
)
in above code connect i changed from self.room_name to self.channel_name and its working perfect. It also working fine with AsyncWebsocketConsumer.