티스토리 뷰

반응형

예전에 스터디에서 발표자료로 만들었던 피피티를 발견해서 블로그에 공유 해보려 한다.

발표 자료로 사용하던 내용을 그대로 가져와 서체가 사용자 친화적이 아닙니다.

 

본 게시글은 Django 공식 홈페이지 문서를 바탕으로 작성 되었습니다.

https://channels.readthedocs.io/en/latest/index.html#django-channels

 

Django Channels — Channels 2.4.0 documentation

Channels is a project that takes Django and extends its abilities beyond HTTP - to handle WebSockets, chat protocols, IoT protocols, and more. It’s built on a Python specification called ASGI. It does this by taking the core of Django and layering a full

channels.readthedocs.io

//공식 홈페이지 Django Channels 예제 (templateshtml)

 

 

Django Channels 공식 문서에 따르면 Channles를 다음과 같이 소개하고 있습니다.

1) Web socket, Redis를 사용하여 채널을 관리

 

2) Django 자체는 동기식이지만, Channels를 사용하면 연결과 소켓을 비동기 처리

 

3) 현재 버전인 Channels 2는 python3.5 이상에서만 동작

 

4) ASGI( Async Server Gateway Interface )프로토콜은 WSGI와 잘 호환되도록 설계

 

ASGI( Asynchronous Server Gateway Interface )는 WSGI를 계승한 것으로 비동기 방식으로 실행

웹 서버와 python 응용프로그램 간의 표준 인터페이스를 제공하기 위해 Django Channels와 배포에 사용되는 Daphne 서버에서 정의한 사양으로서 HTTP, HTTP/2 및 WebSocket와 같은 프로토콜을 지원

ASGI는 비동기 요청인 웹 소켓을 처리하는 이벤트로서 connect, send, receive, disconnect가 있음

 

 

$ django-admin.py startproject mysite

$ python manage.py chat

//프로젝트 생성후 앱 생성 , __init__.py views.py 제외하고는 사용안함

 

 

 

html파일을 하나 만들어준다.

setting.py 파일에서 APPS에 'chat'을 추가해준다.

 

 

 

프로젝트 경로에 있는 urls.py와는 다른 앱경로에 urls.py를 추가시키고 urlpatterns를 작성해준다.

이 urls.py는 프로젝트경로에 있는 urls.py와 이어질것이다.

 

 

 

 

서버를 실행하게 되면 위와같이 chat은 보이지만 chqt/lobby는 보이지 않는다.

왜냐하면 lobby.html을 만들어주지 않았기 때문

 

 

 

 

 

 

 

 

https://channels.readthedocs.io/en/latest/tutorial/part_2.html

위 주소에서 html 코드 복사해서 뷰 만들어줌

 

 

 

 

 

 

 

 

 

 

 

Channel layer는 의사소통 시스템입니다.

이는 많은 소비자들 또는 Django의 다른 부분들과 의사소통을 할 수 있게 해줍니다.

Channel layer에는 다음과 같은 추상화를 제공합니다.

1) channel

channel은 메시지를 보낼있는 우편함 개념입니다.

채널은 이름을 갖고 있으며, 누구든지 채널에 메시지를 보낼있습니다.

2) group

group은 채널과 관련된 그룹입니다.

그룹은 이름을 가지며, 그룹 이름을 가진 사용자는 누구나 그룹에 채널을 추가/삭제가 가능하고, 그룹의 모든 채널에게 메시지를 보낼있습니다.

그러나 그룹에 속한 채널을 나열할 수는 없습니다.

지금 예제에서는 채팅 방안에 있는 소비자들이 서로 대화를 할 수 없기 때문에, 이를 가능하게 해야 합니다.

그러기 위해서는 room 이름을 기반으로group에 채널을 추가해야 합니다.

그래야 채팅 소비자들은 같은 방안에 있는 다른 소비자들에게 메시지를 보낼있습니다.

-> $ pip install channels_redis //channels_redis 설치

 

 

 

 

 

ngrok에 대한 설명은 아래 포스팅에 설명 되어있습니다.

https://rlg1133.tistory.com/23

 

ngrok 사용법

https://ngrok.com/download ngrok - download Download & setup ngrok Get started with ngrok in just a few seconds. Download ngrok First, download the ngrok client, a single binary with zero run-time d..

rlg1133.tistory.com

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함