X
和Y
是两个Person
。 X
向Y
发送了一个朋友请求,因此在Y
个人资料中会显示好友请求的通知。然后Y
接受了好友请求,因此在X
个人资料中也会出现接受好友请求的通知。
我知道django频道可以处理实时通知,并且可以通过用户创建分组来解决。
但是,为每个特定用户创建群组是最佳做法吗?有没有其他方法可以解决这个问题?
答案 0 :(得分:1)
向个人用户发送消息的最简单方法是将该用户添加到消费者connect()
方法的各自组中。
class Consumer(WebsocketConsumer):
def connect(self):
self.group_name = self.scope['user'].pk
# Join group
async_to_sync(self.channel_layer.group_add)(
self.group_name,
self.channel_name
)
self.accept()
每当用户访问yourapp.routing.websocket_urlpatterns
中指定的页面时,他们都会自动添加到该组中,因此无需做太多工作。
发送邮件也很简单,因为邮件已经包含了user.pk
个目标。
def ajax_accept_friend_request(request):
friend = request.GET.get('id', None)
channel_layer = get_channel_layer()
# Trigger message sent to group
async_to_sync(channel_layer.group_send)(
friend,
{
'type': 'your_message_method',
'accept': True
}
)
return HttpResponse()