Не могу настроить вебсокет в джанго channels
не получается установиться связь по вебсокету, ниже приведу части кода 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]
Источник: Stack Overflow на русском