Django Channels - Route not found
Я корпел над этим последние 4 дня и так и не смог подключить вебсокеты, всегда выдает Not found : ws/play/testroomcode
Это мой consumers.py:
from channels.generic.websocket
import WebsocketConsumer from asgiref.sync
import async_to_sync
import json
class GameRoom(WebsocketConsumer):
def connect(self,event):
print('Websocket Received...',event)
self.room_name = self.scope['url_route']['kwargs']['room_code']
self.room_group_name = 'room_%s' % self.room_name
print(self.room_group_name)
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
self.accept()
def receive(self,event):
print('Websocket Received...',event)
def disconnect(self,event):
print('Websocket Disconnected...',event)
game/asgi.py
import osfrom django.core.asgi
import get_asgi_applicationfrom channels.routingimport ProtocolTypeRouter, URLRouterfrom channels.auth
import AuthMiddlewareStackfrom app1
import routing # Import your routingfrom app1.consumers import GameRoomfrom django.urls import path
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'game.settings')websocket_urlpatterns = [path('ws/play/<room_code>', GameRoom.as_asgi()),]
application = ProtocolTypeRouter({'http': get_asgi_application(),'websocket': AuthMiddlewareStack(URLRouter(websocket_urlpatterns)),})
game/settings.py
INSTALLED_APPS = ['channels','django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app1',
]
ASGI_APPLICATION = 'game.asgi.application'
#WSGI_APPLICATION = 'game.wsgi.application'
CHANNEL_LAYERS = {"default": {"BACKEND": "channels_redis.core.RedisChannelLayer","CONFIG": {"hosts": [("127.0.0.1", 6379)], # Use quotes around the IP address},},}
Я пробовал следовать каждому руководству на YouTube, ничего не помогает, установил django, channel, channel-redis, виртуальное окружение, все возможные вещи в интернете, но так и не нашел, как его подключить.
Прочитал все решения на Stack Overflow, которые имеют похожие ошибки, как у меня, но ни одно из них не работает для меня.