django에서 websocket을 사용하는 방법

29
Django에서 WebSocket을 사용하는 방법 dduk-ddak/coding-night-live Jiyoon, Ha 2017.2.8

Upload: naver-d2

Post on 14-Feb-2017

95 views

Category:

Technology


3 download

TRANSCRIPT

Django에서 WebSocket을사용하는방법

dduk-ddak/coding-night-live

Jiyoon, Ha

2017.2.8

HTML5와함께등장.

실시간으로사용자와상호작용하는웹페이지를만들기위한것.

브라우저 - 웹서버간자유로운양방향메시지송수신가능!

WebSocket ..

caniuse.com

IE는 10버전이상부터지원!

그동안 django에서는 websocket을사용하기에까다로운점이많았다!

하지만 ..

django는 request가들어오면 response를하고, 다음 request를기다리는구조이기때문이다.

이는전이중방식인 websocket을다루는데에어려움이많다.

특히, 채팅처럼지속적인연결을유지하면서언제어느때나데이터를전송해야하는서비스를제작하기에맞지않았다.

왜냐하면 ..

geventgevent-socketiogevent-websocketdjango-socketio…

websocket을사용할수있게도와주는것들은많지만django 1.10버전에서작동하지않거나, 개발하기에상당히어렵다!

다행히 django에서 websocket을사용할수있게해주는요정이등장!

ChannelsChannels의등장으로

django에서 websocket 처리를할때

더이상 tornado 등을이용하여복잡하게코드를짤필요가없어짐!

Channelsdjango에새로운계층을추가해주며, 이는다음과같은기능을한다.- HTTP와 Websocket handling- running views, websocket handler and background tasks

ASGI라는 프로토콜로통신을하며, 이는WSGI와 유사하나,더많은프로토콜유형을지원한다!!!.

asyncio, gevent와같은비동기식코드를 django에도입해주는게아니다.

blog.heroku.com/in_deep_with_django_channels_the_future_of_real_time_apps_in_django

blog.heroku.com/in_deep_with_django_channels_the_future_of_real_time_apps_in_django

Django에서 Channels를사용하기위한방법에대해서본격적으로알아봅시다!

그렇다면 ..

Channels를 이용하기 위한 준비물

Python 3.x

Django 1.9 +

Channels

Redis : Channel Layer를사용하기위해필요함!

django 프로젝트 설정

settings.py

asgi.py

routing 설정

coding_night_live/routing.py

coding_night_live/consumers.py

manage_room/routing.py

manage_room/consumers.py

coding_night_live/routing.py

coding_night_live/consumers.py

coding_night_live/routing.py

manage_room/routing.py

manage_room/consumers.py

websocket 사용

reconnecting-websocket.js

jQuery

cnl_websocket.js

cnl_room.js

참고자료

d2.naver.com/helloworld/1336

channels.readthedocs.io

blog.heroku.com/in_deep_with_django_channels_the_future_of_real_time_apps_in_django