일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 백준
- DRF
- API
- 파이썬
- form
- 알고리즘
- AWS
- 알고리즘 연습
- web
- 장고
- Django
- js
- MAC
- java
- c++
- es6
- django rest framework
- javascript
- CSS
- react
- Algorithm
- 알고리즘 문제
- django widget
- PYTHON
- 파이썬 알고리즘
- HTML
- django ORM
- 알고리즘 풀이
- Baekjoon
- Git
- Today
- Total
목록websocket (3)
수학과의 좌충우돌 프로그래밍
소비자 개선 앞선 포스팅 WebSocket (2) 에서 작성했던 소비자는 동기적으로 작성되어 있습니다. 이렇게 함으로서 django 의 I/O 함수를 쉽게 호출할 수 있어 편리했습니다. 소비자를 비동기식으로 작성하게 되면 요청을 처리할 때, 추가적인 쓰레드를 생성하지 않습니다. 즉 성능 개션을 불러올 수 있는 것이죠. 실시간 채팅같은 경우에는 성능이 굉장히 중요한 요소이기 때문에 이 과정이 필요합니다. 앞에서도 한 번 언급했던 sync_to_async 를 통해서 django 의 동기적인 코드를 비동기적으로 수행하도록 할 수 있지만 지금 사용할 async-native 라이브러리보다 성능이 떨어집니다. # chat/consumers.py from channels.generic.websocket import ..
저번 시간 WebSocket (1)에서는 이론적인 개념들과, 약간의 실습을 진행해보았습니다. 하지만 아직 채팅은 보내지지 않고 에러가 발생하였습니다. 지금부터 그 문제를 해결해보도록 하겠습니다. 소비자 만들기 django의 기본 원리를 생각해보면 HTTP 요청을 받아들이고 매핑된 URL 로 이동, 이에 따라 views 에 함수를 실행합니다. 이와 유사하게 Channels역시 WebSocket 연결을 받아들이면, root routing configuration에서 소비자를 찾은 후에, 이벤트를 처리하기 위한 함수들을 호출합니다. # chat/consumers.py from channels.generic.websocket import WebsocketConsumer import json class ChatC..
비동기적, 즉 실시간 채팅을 구현하기 위해서 WebSocket 을 사용하고자 하였고, django에서 이를 가능하게 해주는 Channels 라이브러리를 알아보았습니다. 전체적인 내용은 공식 문서 를 참고하였습니다. WebSocket 이란? WebSocket은 프로토콜로서, 실시간으로 데이터를 양방향 통신 할 수 있게 해주는 기술 입니다. Socket 이란 쉽게 생각해서 통신을 위한 통로라고 생각하면 됩니다. 이런 통로를 Web 에도 도입하게 되었는데 기존의 Web이 정보를 어떻게 주고 받는지 생각해보면 socket이 필요한 이유를 알 수 있습니다. Web 환경은 필요한 정보를 HTTP 기반으로 Request/Response로 연결하여 데이터를 주고 받아 네트워크의 연결을 유지하지 않는 특징을 가지고 있습..