Не могу настроить вебсокет в джанго channels

Рейтинг: 0Ответов: 0Опубликовано: 10.07.2023

не получается установиться связь по вебсокету, ниже приведу части кода django chanells

asgi.py

import os

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

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

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

consumer.py

import json
from channels.generic.websocket import AsyncWebsocketConsumer


class ChatConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        print("WebSocket connected")
        await self.accept()

        await self.send(text_data=json.dumps({
            'type': 'connection_established',
            'message': 'You are now connected!'
        }))

    async def disconnect(self, close_code):
        print("WebSocket disconnected")

    async def receive(self, text_data=None, bytes_data=None):
        print("WebSocket received data:", text_data)

routing.py

from django.urls import re_path
from . import consumers

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

js:

    <script type="text/javascript">
        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)
        }
    </script>

ошибка:

WebSocket HANDSHAKING /ws/socket-server [127.0.0.1:56088]
Exception inside application: No route found for path 'ws/socket-server'.
Traceback (most recent call last):
  File "C:\Users\User\PycharmProjects\djangoProject\venv\lib\site-packages\channels\staticfiles.py", line 44, in call
    return await self.application(scope, receive, send)
  File "C:\Users\User\PycharmProjects\djangoProject\venv\lib\site-packages\channels\routing.py", line 71, in call
    return await application(scope, receive, send)
  File "C:\Users\User\PycharmProjects\djangoProject\venv\lib\site-packages\channels\sessions.py", line 47, in call
    return await self.inner(dict(scope, cookies=cookies), receive, send)
  File "C:\Users\User\PycharmProjects\djangoProject\venv\lib\site-packages\channels\sessions.py", line 263, in call
    return await self.inner(wrapper.scope, receive, wrapper.send)
  File "C:\Users\User\PycharmProjects\djangoProject\venv\lib\site-packages\channels\auth.py", line 185, in call
    return await super().call(scope, receive, send)
  File "C:\Users\User\PycharmProjects\djangoProject\venv\lib\site-packages\channels\middleware.py", line 26, in call
    return await self.inner(scope, receive, send)
  File "C:\Users\User\PycharmProjects\djangoProject\venv\lib\site-packages\channels\routing.py", line 168, in call
    raise ValueError("No route found for path %r." % path)
ValueError: No route found for path 'ws/socket-server'.
WebSocket DISCONNECT /ws/socket-server [127.0.0.1:56088]

Ответы

Ответов пока нет.