#django #websocket #django-channels
Вопрос:
Я впервые использую каналы django в новом проекте, он отлично работает для 5 других приложений. Я только что вернулся к нему, чтобы добавить веб-сайт для нового приложения, но я не могу заставить django распознать URL-адрес, я продолжаю получать » Не найдено: /ws/globallayer/». Я настроил его точно так же, как и для других приложений, я не знаю, просто ли я забыл шаг для регистрации URL-адресов или что-то в этом роде, надеясь, что кто-то увидит что-то, что я пропустил.
consumers.py
import json
from channels.generic.websocket import AsyncWebsocketConsumer
class GloballayerConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.group_name = 'globallayer'
await self.channel_layer.group_add(
self.group_name,
self.channel_name
)
await self.accept()
async def disconnect(self, close_code):
await self.channel_layer.group_discard(
self.group_name,
self.channel_name
)
async def globallayer_update(self, event):
data = event['data']
# Send message to WebSocket
await self.send(text_data=json.dumps({
'data': data
}))
routing.py
from django.urls import re_path
from . import consumers
websocket_urlpatterns = [
re_path(r'^ws/globallayer/
файл проекта asgi.ppy
all_websocket_urlpatterns = [
# ... other websocket routes from different apps,
*globallayer.routing.websocket_urlpatterns,
]
application = ProtocolTypeRouter({
"http": get_asgi_application(),
"websocket": AuthMiddlewareStack(
URLRouter(
all_websocket_urlpatterns
)
),
})
файл проекта asgi.ppy
,
consumers.GloballayerConsumer.as_asgi())
]