Уведомления каналов Django не работают

Я пытаюсь сделать систему уведомления о запросе друга в реальном времени для проекта, над которым я работаю. Я думал, что это будет легко, потому что я уже использовал каналы для приложения чата и потому что я думаю, что нет необходимости слушать сигналы с другой стороны веб-сокета. Предположительно, это не так. Буду очень признателен, если вы сможете помочь. Я использовал JwtAuthMiddleware из django_channels_jwt_auth_middleware, он работает для моего чат-приложения. Я могу подключиться к вебсокету, но не получаю уведомление, когда пользователь отправляет запрос на дружбу. Все остальное работает нормально. Спасибо

Вот код // views.py

class SendRequestView(views.APIView):
permission_class = (permissions.IsAuthenticated,)

def post(self, request, *args, **kwargs):
    receiver_username = self.kwargs['receiver_username']
    if receiver_username is not None:
        receiver = get_object_or_404(User, username=receiver_username)
        request = ConnectRequest.objects.create(sender=self.request.user, receiver=receiver)
        notification = ConnectNotification.objects.create(type='connect request', receiver=receiver, initiated_by=self.request.user)
        channel_layer = get_channel_layer()
        channel = f'notifications_{receiver.username}'
        async_to_sync(channel_layer.group_send)(
            channel, {
                'type': 'notify',
                'notification': json.dumps(ConnectNotificationSerializer(notification).data, cls=DjangoJSONEncoder),
            }
        )
        data = {
            'status': True,
            'message': 'Success',
        }
        return JsonResponse(data)

// consumer.py class ConnectNotificationConsumer(AsyncJsonWebsocketConsumer):

async def connect(self):
    user = self.scope['user']
    group_layer = f'notifications_{user.username}'
    await self.accept()
    await self.channel_layer.group_add(group_layer, self.channel_name)

async def disconnect(self, close_code):
    user = self.scope['user']
    group_layer = f'notifications_{user.username}'
    await self.channel_layer.group_discard(group_layer, self.channel_name)

async def notify(self, event):
    notification = event['notification']
    await self.send(text_data={
            'notification': notification
        }
    )
Вернуться на верх