바뀜

둘러보기로 가기 검색하러 가기
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"
 
!과정
 
!과정

둘러보기 메뉴