如何解决django 信号的 Django websocket
我正在尝试使用信号将数据发送到通道 我在每一步打印数据,看看它去哪里了 它被发送到组,它们都具有相同的名称,但它没有到达处理程序,所以它被发送到客户端
这是我的代码
import json
from channels.generic.websocket import AsyncWebsocketConsumer
from asgiref.sync import sync_to_async
from django.db.models.signals import *
from django.dispatch import receiver
from .models import Message
from channels.layers import get_channel_layer
channel_layer = get_channel_layer()
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_id = self.scope['url_route']['kwargs']['pk']
self.room_group_name = 'chat_%s' % self.room_id
print(self.room_group_name)
# Join room
await self.channel_layer.group_add(
self.room_group_name,self.channel_name
)
await self.accept()
async def disconnect(self,close_code):
# Leave room
await self.channel_layer.group_discard(
self.room_group_name,self.channel_name
)
# Receive message from room group
async def chat_message(self,event):
pk = event["pk"]
print("received" + pk)
# Send message to WebSocket
await self.send_json({'pk': pk})
@receiver(post_save,sender=Message)
def SendMessage(sender,instance,**kwargs):
pk = instance.receiver.pk
room_group_name = 'chat_%s' % pk
channel_layer.group_send(
room_group_name,{'type': 'chat_message','pk': pk,})
print('sent to ' + room_group_name)
self.room_group_name 和 SendMessage 中的相同
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。