Как установить порт в вебсокетах каналов Django

Я работаю над проектом Django и создал приложение Chat, теперь проблемы с портом websocket, когда я начинаю общаться с одним человеком, порт по умолчанию генерируется, и я оставляю этого пользователя и общаюсь с другим пользователем, порт меняется, поэтому я не могу получить уведомление о сообщении другого человека из-за того, что порт меняется каждый раз, так что, пожалуйста, помогите мне с этим

consumers.py

class PersonalChatConsumer(WebsocketConsumer):

def connect(self):
    my_id = self.scope['user'].id
    other_user_id = self.scope['url_route']['kwargs']['id']
    if int(my_id) > int(other_user_id):
        self.room_name = f'{my_id}-{other_user_id}'
    else:
        self.room_name = f'{other_user_id}-{my_id}'

    self.room_group_name = 'chat_%s' % self.room_name

    async_to_sync(self.channel_layer.group_add)(
        self.room_group_name,
        self.channel_name
    )
    self.accept()

def receive(self, text_data=None, bytes_data=None):

    data = json.loads(text_data)
    message = data['message']
    email = data['email']
    data_base = self.save_message(email, self.room_group_name, message)
    print("This is a database output", data_base)
    print(text_data)
    async_to_sync(self.channel_layer.group_send)(
        self.room_group_name,
        {
            'type': 'chat_message',
            'message': message,
            'email': email,
        }
    )

def chat_message(self, event):
    message = event['message']
    user_id = event['email']
    user_obj = User.objects.get(id=user_id)
    self.send(text_data=json.dumps({
        'message': message,
        'email': user_obj.email,
        'user_id': user_id
    }))
    print(f"{user_obj.email} : Messaage sent")

def disconnect(self, code):
    async_to_sync(self.channel_layer.group_discard)(
        self.room_group_name,
        self.channel_name
    )

# @database_sync_to_async is used with asynchronous code
def save_message(self, email, thread_name, message):
    sendername = User.objects.get(id=email)
    sender_name = str(sendername)
    my_id = self.scope['user'].email
    new_message = ChatModel.objects.create(sender=email, sender_name=sender_name, 
    receiver_name=my_id,
    message=message, thread_name=thread_name)
    new_message.save()
    return "Succes"

setting.py

 MIDDLEWARE = [
       'django.middleware.security.SecurityMiddleware',
       'django.contrib.sessions.middleware.SessionMiddleware',
       'django.middleware.common.CommonMiddleware',
       'django.middleware.csrf.CsrfViewMiddleware',
       'django.contrib.auth.middleware.AuthenticationMiddleware',
       'django.contrib.messages.middleware.MessageMiddleware',
       'django.middleware.clickjacking.XFrameOptionsMiddleware',
   ]



     ROOT_URLCONF = 'Crackit.urls'

     TEMPLATES = [
            {
               'BACKEND': 'django.template.backends.django.DjangoTemplates',
               'DIRS': [os.path.join(BASE_DIR, 'templates')],
               'APP_DIRS': True,
               'OPTIONS': {
                          'context_processors': [
                          'django.template.context_processors.debug',
                          'django.template.context_processors.request',
                          'django.contrib.auth.context_processors.auth',
                          'django.contrib.messages.context_processors.messages',
                   ],
                  },
                },
            ]

     WSGI_APPLICATION = 'Crackit.wsgi.application'
     ASGI_APPLICATION = 'Crackit.asgi.application'

     CHANNEL_LAYERS = {
         "default": {
         "BACKEND": "channels.layers.InMemoryChannelLayer",
   
          }

        }


   # CHANNEL_LAYERS = {
   #     "default": {
   #         "BACKEND": "channels_redis.core.RedisChannelLayer",
   #         "CONFIG": {
   #             "hosts": [("127.0.0.1", 6379)],
   #         },
   #     },
   # }


    DATABASES =  {
      'default': {
         'ENGINE': 'djongo',
          'NAME': 'crackitdatabase',
        }
     }

выход терминала

 WebSocket HANDSHAKING /ws/2/ [127.0.0.1:8244]
 WebSocket CONNECT /ws/2/ [127.0.0.1:8244]
 HTTP GET /privatechat/admin@gmail.com/ 200 [0.17, 127.0.0.1:8204]
 WebSocket DISCONNECT /ws/3/ [127.0.0.1:8211]
 WebSocket HANDSHAKING /ws/3/ [127.0.0.1:8255]
 WebSocket CONNECT /ws/3/ [127.0.0.1:8255]
 HTTP GET /privatechat/chat_page/raj@gmail.com/ 200 [0.20, 127.0.0.1:8221]
 WebSocket DISCONNECT /ws/2/ [127.0.0.1:8244]
 WebSocket HANDSHAKING /ws/2/ [127.0.0.1:8262]
 WebSocket CONNECT /ws/2/ [127.0.0.1:8262]

порт меняется каждый раз, так в чем проблема, пожалуйста, помогите, спасибо.

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