마저 가봅쉬다 쉬다
channels : (필수) 장고 통합 레이어
daphne : (필수) ASGI 서버
- 채널스 4.0부터 장고/채널스 개발서버로서 사용됩니다.
- 실서비스에서는 daphne 명령이나 gunicorn/uvicorn 명령을 사용하여, 장고 서버를 구동합니다
channels_redis : (옵션) Redis 채널 레이어
- Channels 구동에 필수는 아니지만, 채팅 서비스에서는 프로세스간 통신이 필요하기에 필수
Django 기본에서는 HTTP 요청을 처리하는 주체는 View였으며, 함수와 클래스 형태로 구현
Channels에서는 HTTP와 웹소켓 요청을 처리하는 주체가 Consumer 클래스
- 함수 구현은 지원되지 않으며, 클래스로만 구현할 수 있음
View에서는 HttpRequest 객체를 통해서 유저/세션/쿠키/헤더 등의 현재 요청의 모든 내역을 조회할 수 있음
Consumer Instance에서는 self.scope 사전을 통해 현재 요청의 모든 내역을 조회할 수 있음
Consumer 클래스는 channels에서 요청을 처리하는 주체로서 일관된 처리방법을 제시
웹소켓/HTTP 프로토콜을 처리하는 기능
채널레이어를 통해 메세지를 보내고 받는 부분까지 모두 지원
반복을 줄이고, 최소한의 코드로 비즈니스 로직에 집중할 수 있음
View 함수/클래스도 요청 URL에 따라 그 요청을 처리할 View 함수를 결정할 수 있듯이 채널스에서는 3가지 기준으로 현재 요청을 처리할 Consumer Instance를 결정할 수 있습니다.
기준