Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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을 다루는 데에 어려움이 많다.
특히, 채팅처럼 지속적인 연결을 유지...
gevent
gevent-socketio
gevent-websocket
django-socketio
…
websocket을 사용할 수 있게 도와주는 것들은 많지만
django 1.10버전에서 작동하지 않거나, 개발하기에...
다행히 django에서 websocket을 사용할 수 있게 해주는 요정이 등장!
Channels
Channels의 등장으로
django에서 websocket 처리를 할 때
더 이상 tornado 등을 이용하여 복잡하게 코드를 짤 필요가 없어짐!
Channels
django에 새로운 계층을 추가해주며, 이는 다음과 같은 기능을 한다.
- HTTP와 Websocket handling
- running views, websocket handler and backgr...
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_...
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법
Upcoming SlideShare
Loading in …5
×

Django에서 websocket을 사용하는 방법

3,816 views

Published on

D2 CAMPUS FEST 두 번째 밋업 Tech talk

Published in: Technology
  • Be the first to comment

Django에서 websocket을 사용하는 방법

  1. 1. Django에서 WebSocket을 사용하는 방법 dduk-ddak/coding-night-live Jiyoon, Ha 2017.2.8
  2. 2. HTML5와 함께 등장. 실시간으로 사용자와 상호작용하는 웹페이지를 만들기 위한 것. 브라우저 - 웹 서버 간 자유로운 양방향 메시지 송수신 가능! WebSocket ..
  3. 3. caniuse.com IE는 10버전 이상부터 지원!
  4. 4. 그동안 django에서는 websocket을 사용하기에 까다로운 점이 많았다! 하지만 ..
  5. 5. django는 request가 들어오면 response를 하고, 다음 request를 기다리는 구조이기 때문이다. 이는 전이중 방식인 websocket을 다루는 데에 어려움이 많다. 특히, 채팅처럼 지속적인 연결을 유지하면서 언제 어느때나 데이터를 전송해야 하는 서비스를 제작하기에 맞지 않았다. 왜냐하면 ..
  6. 6. gevent gevent-socketio gevent-websocket django-socketio … websocket을 사용할 수 있게 도와주는 것들은 많지만 django 1.10버전에서 작동하지 않거나, 개발하기에 상당히 어렵다!
  7. 7. 다행히 django에서 websocket을 사용할 수 있게 해주는 요정이 등장!
  8. 8. Channels Channels의 등장으로 django에서 websocket 처리를 할 때 더 이상 tornado 등을 이용하여 복잡하게 코드를 짤 필요가 없어짐!
  9. 9. Channels django에 새로운 계층을 추가해주며, 이는 다음과 같은 기능을 한다. - HTTP와 Websocket handling - running views, websocket handler and background tasks ASGI라는 프로토콜로 통신을 하며, 이는 WSGI와 유사하나, 더 많은 프로토콜 유형을 지원한다!!!. asyncio, gevent와 같은 비동기식 코드를 django에 도입해주는게 아니다.
  10. 10. blog.heroku.com/in_deep_with_django_channels_the_future_of_real_time_apps_in_django
  11. 11. blog.heroku.com/in_deep_with_django_channels_the_future_of_real_time_apps_in_django
  12. 12. Django에서 Channels를 사용하기 위한 방법에 대해서 본격적으로 알아봅시다! 그렇다면 ..
  13. 13. Channels를 이용하기 위한 준비물 Python 3.x Django 1.9 + Channels Redis : Channel Layer를 사용하기 위해 필요함!
  14. 14. django 프로젝트 설정 settings.py asgi.py
  15. 15. routing 설정 coding_night_live/routing.py coding_night_live/consumers.py manage_room/routing.py manage_room/consumers.py
  16. 16. coding_night_live/routing.py
  17. 17. coding_night_live/consumers.py
  18. 18. coding_night_live/routing.py
  19. 19. manage_room/routing.py
  20. 20. manage_room/consumers.py
  21. 21. websocket 사용 reconnecting-websocket.js jQuery cnl_websocket.js cnl_room.js
  22. 22. 참고자료 d2.naver.com/helloworld/1336 channels.readthedocs.io blog.heroku.com/in_deep_with_django_channels_the_future_of_real_time_apps_in_django

×