我很确定我在文档中遗漏了一些东西, 但我无法在任何地方找到明确的答案。
我有一个 Django 应用程序,我想做的是将 Django Channels 用于 websocket 目的,但是我也对 Django Channels 可以为我提供的异步 http 感兴趣。
查遍了互联网以及Django Channels的源代码, 我能找到的唯一类型的示例与文档
中的示例相匹配其中 ProtocolTypeRouter 中的“http”属性设置为
get_asgi_application
,
并且只有 websocket 有自己的 urlpatterns。
application = ProtocolTypeRouter({
# Django's ASGI application to handle traditional HTTP requests
"http": django_asgi_app,
# WebSocket chat handler
"websocket": AllowedHostsOriginValidator(
AuthMiddlewareStack(
URLRouter([
path("chat/admin/", AdminChatConsumer.as_asgi()),
path("chat/", PublicChatConsumer.as_asgi()),
])
)
),
})
我不明白如何设置 http 属性将路由到的 urlpatterns。
这不起作用,请使用以下语法,如果您不使用,请首先使用 websocket(就像我删除以更好地理解)
应用程序 = 协议类型路由器({ # Django 的 ASGI 应用程序处理传统的 HTTP 请求 “http”:django_asgi_app, '通道': ChannelNameRouter({ '渠道名称': ConsumerName.as_asgi(), }) })