Я пытаюсь настроить приложение Django + Heroku с каналами (V.2).Я пытался следовать всем учебникам, но большинство из них не обновляются.Приложение должно использовать WSGI для HTTP-запроса и ASGI для запросов веб-сокетов.До сих пор я обнаружил, что это почти работает, последний недостающий фрагмент - это чтобы конечные точки websockets были видны для веб-приложения.На этом этапе всякий раз, когда я пытаюсь создать новый веб-сокет:
Ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 404
Вот настройки:
ASGI_APPLICATION = 'app_xxx.routing.application'
ASGI_THREADS = 5
WSGI_APPLICATION = 'app_xxx.wsgi.application'
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
'hosts': [os.environ.get('REDIS_URL')],
},
},
}
Вот этот Procfile:
web: gunicorn app_xxx.wsgi --log-file -
web2: daphne app_xxx.asgi:channel_layer --port $PORT --bind 0.0.0.0 -v2
worker: python manage.py runworker channel_layer -v2
Вот аси:
import os
from channels.layers import get_channel_layer
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app_xxx.settings")
channel_layer = get_channel_layer()
Вот маршрут:
from channels.routing import ProtocolTypeRouter, URLRouter, ChannelNameRouter
from django.urls import path
from apps.booking.consumers import BookingConsumer
application = ProtocolTypeRouter({
"websocket": URLRouter([
path('ws/booking_review/<room_name>', BookingConsumer),
]),
})