Каналы WebSocket в Django не подключаются

Я борюсь, почему до сих пор не подключен мой WebSocket с помощью Django, я использовал laragon как Mysql и я просто использовал мою локальную базу данных, и я просто хочу попробовать сначала, прежде чем сохранить в базу данных, если это работает или нет, но я получаю ошибку. Я что-то забыл?

Not Found: /ws/socket-server/

так что у меня такой формат

и у меня ошибка в моем html url в строке const chatSocket = new WebSocket(url)

html

$(document).ready(function () {
  let url = `ws://${window.location.host}/ws/socket-server/`
  const chatSocket = new WebSocket(url)
  chatSocket.onmessage = function(e){
      let data = JSON.parse(e.data)
      console.log('Data:', data)

      if(data.type === 'chat'){
          let messages = document.getElementById('messages')

          messages.insertAdjacentHTML('beforeend', `<div> <p>${data.message}</p></div>`)
      }
  }
});

main/routing.py

from django.urls import re_path 
from main import consumers

websocket_urlpatterns = [
    re_path(r'ws/socket-server/', consumers.ChatConsumer.as_asgi())
]

main/consumers.py

import json
from channels.generic.websocket import WebsocketConsumer
from asgiref.sync import async_to_sync

class ChatConsumer(WebsocketConsumer):
    def connect(self):
        self.room_group_name = 'test'

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

        self.accept()
   

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

        async_to_sync(self.channel_layer.group_send)(
            self.room_group_name,
            {
                'type':'chat_message',
                'message':message
            }
        )

    def chat_message(self, event):
        message = event['message']

        self.send(text_data=json.dumps({
            'type':'chat',
            'message':message
        }))

tev/asgi.py

import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
import main.routing

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tev.settings')

application = ProtocolTypeRouter({
    'http':get_asgi_application(),
    'websocket':AuthMiddlewareStack(
        URLRouter(
            main.routing.websocket_urlpatterns
        )
    )
})

settings.py

INSTALLED_APPS = [
   ....
   'channels',
]
ASGI_APPLICATION = 'tev.asgi.application'
Вернуться на верх