django-subdomains 라이브러리는 channels websocket URL 라우팅에 관여할 수 없습니다.
웹소켓에서도 urlpatterns를 지정하고 URL 별로 다른 Consumer를 지정할 수 있는데요. 서브도메인 별로 다른 urlpatterns를 가지도록 할 수 있느냐. 이를 위해 django-subdomains 라이브러리를 사용할 수 있느냐가 주제였습니다.
django-subdomains 라이브러리는 장고 미들웨어를 통해, 요청 도메인별로 root urlconf를 다르게 설정해주는 기능을 합니다. channels에서 django-subdomains이 사용가능하느냐인데요. 결론적으로는 django-subdomains는 channels를 지원할 수 없습니다.
asgi/channels를 통해 장고를 구동하게 되면, http/websocket 라우팅은 장고로 요청이 전달되기 전에 asgi 레벨에서 이뤄지므로, django-subdomains는 라우팅에 관여를 할 수 없게 됩니다.
그래서 channels의 ProtocolTypeRouter를 참고하여 SubdomainURLRouter를 간단히 만들어봤습니다. 그럼 도메인 별로 다른 websocket urlpatterns를 지정할 수 있게 됩니다.