ft_transcendence/chat/consumers.py

45 lines
878 B
Python

import json
from channels.generic.websocket import WebsocketConsumer
from asgiref.sync import async_to_sync
class ChatConsumer(WebsocketConsumer):
def connect(self):
self.room_group_name = 'test'
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
self.accept()
def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
user = self.scope["user"]
if user.is_anonymous:
return;
async_to_sync(self.channel_layer.group_send)(
self.room_group_name,
{
'type':'chat_message',
'username':user.username,
'message':message
}
)
def chat_message(self, event):
user = self.scope["user"]
if user.is_anonymous:
return;
self.send(text_data=json.dumps({
'type':'chat',
'username':event['username'],
'message':event['message']
}))