Add comments broadcast
This commit is contained in:
@ -2,16 +2,22 @@ import json
|
||||
from channels.generic.websocket import WebsocketConsumer
|
||||
from django.template.loader import render_to_string
|
||||
from apps.back.models import Post, Comment
|
||||
from asgiref.sync import async_to_sync
|
||||
|
||||
class BlogConsumer(WebsocketConsumer):
|
||||
|
||||
def connect(self):
|
||||
self.room_name = self.scope["url_route"]["kwargs"]["room_name"]
|
||||
self.room_group_name = "blog"
|
||||
async_to_sync(self.channel_layer.group_add)(self.room_group_name, self.channel_name)
|
||||
self.accept()
|
||||
|
||||
def disconnect(self, close_code):
|
||||
async_to_sync(self.channel_layer.group_discard)(self.room_group_name, self.channel_name)
|
||||
pass
|
||||
|
||||
def receive(self, text_data):
|
||||
send = False
|
||||
text_data_json = json.loads(text_data)
|
||||
selector = text_data_json["selector"]
|
||||
template = text_data_json["template"]
|
||||
@ -47,13 +53,38 @@ class BlogConsumer(WebsocketConsumer):
|
||||
# Clean form
|
||||
data["newName"] = ''
|
||||
data["newMessage"] = ''
|
||||
# Send Broadcast
|
||||
async_to_sync(self.channel_layer.group_send)(
|
||||
self.room_group_name,
|
||||
{
|
||||
"type": "blog.new.comment",
|
||||
"text": {
|
||||
"selector": selector,
|
||||
"template": template,
|
||||
"html": render_to_string(template, data)
|
||||
}
|
||||
})
|
||||
send = True
|
||||
|
||||
# Send message to WebSocket
|
||||
if not send:
|
||||
self.send(
|
||||
text_data=json.dumps(
|
||||
{
|
||||
"selector": selector,
|
||||
"template": template,
|
||||
"html": render_to_string(template, data)
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
def blog_new_comment(self, event):
|
||||
self.send(
|
||||
text_data=json.dumps(
|
||||
{
|
||||
"selector": selector,
|
||||
"html": render_to_string(template, data)
|
||||
"selector": event["text"]["selector"],
|
||||
"template": event["text"]["template"],
|
||||
"html": event["text"]["html"]
|
||||
}
|
||||
)
|
||||
)
|
||||
|
Reference in New Issue
Block a user