Django при смене пользователя сообщение не приходит из веб-сокета

Я использую веб-сокеты (каналы) в своем проекте django.Сначала при перезагрузке страницы все идет нормально, но когда я хочу пообщаться с другим пользователем, я нажимаю на другого пользователя (запускаю функцию runChatUser из javascript, которая находится в app. js), после чего сообщение отправляется через веб-сокет и принимается через веб-сокет, но в app.js chatSocket.onmessage операция console.log(data) не появляется в консоли javascript. Значит, я не добавил html сообщение в чат. Я пытаюсь исправить это в течение нескольких дней, но у меня не получается. Кто-нибудь может мне помочь?

app.js

consumers.py

# chat/consumers.py
import json
from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer

from chat.models import Message

class ChatConsumer(WebsocketConsumer):
    def connect(self):
        self.room_name = self.scope['url_route']['kwargs']['room_name']
        self.room_group_name = 'chat_%s' % self.room_name
        print("web socket connected ")
        # Join room group
        async_to_sync(self.channel_layer.group_add)(
            self.room_group_name,
            self.channel_name
        )

        self.accept()

    def disconnect(self, close_code):
        print("web socket closed")
        # Leave room group
        async_to_sync(self.channel_layer.group_discard)(
            self.room_group_name,
            self.channel_name
        )

    # Receive message from WebSocket
    def receive(self, text_data):
        text_data_json = json.loads(text_data)
        message = text_data_json['message']

        # Send message to room group
        async_to_sync(self.channel_layer.group_send)(
            self.room_group_name,
            {
                'type': 'chat_message',
                'message': message,
                
            }
        )

    # Receive message from room group
    def chat_message(self, event):
        message = event['message']
        
        # Send message to WebSocket
        self.send(text_data=json.dumps({
            'message': message,
            
        }))

routing.py

# chat/routing.py
from django.urls import re_path

from . import consumers

websocket_urlpatterns = [
    re_path(r'ws/chat/(?P<room_name>[^/]+)/$', consumers.ChatConsumer.as_asgi()),
]

views.py

def get_user(request,room_id):
    if request.method=='GET' and request.is_ajax():
        room=get_object_or_404(Room,id=room_id)
        if request.user == room.first_user:
            second_user=room.second_user
        else:
            second_user=room.first_user
        data ={
                "second_user_name":second_user.get_full_name(),
                "image":second_user.image.url,
                "messages":list(Message.objects.filter(room_id=room_id).all().values()),
                
        }
        return JsonResponse(data,safe=True)
    return JsonResponse({'status':'Fail', 'msg': 'Object does not exist'})  
     

index.html

Вернуться на верх