Я с удовольствием пользуюсь Django-Channels уже несколько месяцев.Тем не менее, я решил добавить второе зависимое от веб-сокета приложение в свой проект Django, и у меня возникли проблемы.
Я получаю ошибку websocket connection failed websocket is closed before the connection is established
.Странно то, что первое приложение работало до того, как было развернуто второе приложение.Кроме того, первое приложение продолжает работать, пока второе приложение не запущено.
Документация Django Channels гласит:
Channels routers only work on the scope level, not on the level of individual events, which means you can only have one consumer for any given connection. Routing is to work out what single consumer to give a connection, not how to spread events from one connection across multiple consumers.
Я думаю, это означает, что Django-Channels не поддерживает маршрутизацию для нескольких соединений веб-сокетов.То есть я думаю, что пытаюсь использовать одно и то же соединение / порт веб-сокета для двух разных приложений.Мой routing.py
файл выглядит следующим образом:
application = ProtocolTypeRouter({
"websocket": AuthMiddlewareStack(
URLRouter([
path("first_application/stream/", app_1_consumers.AsyncApp1),
path("second_application/stream/", app_2_consumers.AsyncApp2),
])
)
})
Когда я попытался использовать приведенную ниже настройку, он не смог найти путь к первому приложению:
application = ProtocolTypeRouter({
"websocket": AuthMiddlewareStack(
URLRouter([
path("second_application/stream/", app_2_consumers.AsyncApp2),
])
),
"websocket02": AuthMiddlewareStack(
URLRouter([
path("first_application/stream/", app_1_consumers.AsyncApp1),
])
),
})
Как я могунастроить мое приложение Django для обслуживания двух разных соединений через веб-сокеты с использованием Django-каналов?Является ли это возможным?Или я просто неправильно настраиваю вещи?