1번째 줄: |
1번째 줄: |
| == 개요 == | | == 개요 == |
− | https://channels.readthedocs.io/en/latest/index.html<nowiki/>를 참고하였다.
| |
− |
| |
− | 장고는 기본적으로 동기식으로, 채팅을 위해선 비동기식 처리가 필요하다.
| |
− |
| |
− | 이를 위해 Django Channels가 마련되어 있다.
| |
− |
| |
− | ASGI(Async Server Gateway Interface)프로토콜은 WSGI를 계승하여 이와 잘 호환되도록 설계되어 있다.
| |
− |
| |
− | ASGI는 비동기 요청인 웹 소켓을 처리하는 이벤트로 connect, send, receive, disconnect가 있다.
| |
| | | |
| == 기초준비 == | | == 기초준비 == |
91번째 줄: |
82번째 줄: |
| 여기까지 하고 runserver 후 제대로 작동하는지 확인하자. | | 여기까지 하고 runserver 후 제대로 작동하는지 확인하자. |
| | | |
− | === 패키지 설치 === | + | === 채팅룸 구현 === |
− | {| class="wikitable"
| |
− | !과정
| |
− | !설명
| |
− | !방법
| |
− | |-
| |
− | |패키지 설치
| |
− | |Channels 패키지를 설치한다.
| |
− | |pip install -U channels
| |
− | |-
| |
− | |앱 등록
| |
− | |settings.py에 추가.
| |
− | channels는 runserver 명령을 제어하여 기존 서버를 대체한다.
| |
− | |INSTALLED_APPS 하위, 가장 처음에 <code>'channels'</code>넣는다.<syntaxhighlight lang="python">
| |
− | INSTALLED_APPS = [
| |
− | 'channels', # 다른 서드파티 앱과 충돌할 수 있어 가장 처음에 둔다.
| |
− | ... # 공식 튜토리얼에선 'chat'을 상위로 올리지만, 아래에 있어도 상관 없다.
| |
− | ...
| |
− | 'chat',
| |
− | </syntaxhighlight>
| |
− | |-
| |
− | |라우팅 설정 작성
| |
− | |가장 상위의 디렉터리에 routing.py를 다음과 같이 작성한다.
| |
− | (취향에 따라 달리 작성해도 된다.)
| |
− | |<syntaxhighlight lang="python">
| |
− | from channels.routing import ProtocolTypeRouter
| |
− | | |
− | application = ProtocolTypeRouter({
| |
− | # (http->django views is added by default)
| |
− | })
| |
− | </syntaxhighlight>
| |
− | |-
| |
− | |설정 추가
| |
− | |settings.py 안에 우측의 내용을 추가한다.
| |
− | 라우팅파일의 위치만 잘 잡아주면 된다.
| |
− | |<syntaxhighlight lang="python">
| |
− | ASGI_APPLICATION = 'routing.application' # routing.py 파일의 application을 불러온다.
| |
− | </syntaxhighlight>(라우팅 파일 안의 application을 가져온다.)
| |
− | |}
| |
− | | |
− | == 채팅룸 구현 == | |
| {| class="wikitable" | | {| class="wikitable" |
| !과정 | | !과정 |