django channels

    Django Channels(Web Socket) - 채팅방스럽게 다듬기

    이번 글에서는 로그인을 통해 사용자를 얻었으니, 1:1 채팅방에 어울리는 형식으로 채팅방을 새로 만들어 볼 예정이다. 먼저 1:1 채팅방을 생각했을 때 자기가 쓴 글은 왼쪽에, 타인이 쓴 글은 오른쪽에 배치할 수 있도록 해야한다. 이에 대해서 먼저 프론트엔드 부분을 수정해주자. 프론트엔드(html, css, js)코드는 아래 블로그를 참고했다. https://dororongju.tistory.com/151 [자바스크립트] 채팅 구현 코드 (프론트) 채팅 구현 코드(프론트) 웹소켓 통신 부분을 제외한 프론트단의 코드입니다. CSS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 *{ margin: 0; padding: 0; } .chat_wrap .header { font-..

    Django Channels(Web Socket) - 회원가입 기능 추가하기

    회원가입 만들기 이번 글에는 회원가입 기능을 구현하고자 한다. 먼저 회원가입 페이지인 signup.html을 만들어 다음과 같이 코드를 입력해준다. 회원가입 페이지 {% csrf_token %} email: username: PW: PW확인: 로그인 하기 이후 account/views.py에 회원가입을 위한 코드를 추가해주자 #account/views.py from django.shortcuts import redirect, render ... from .forms import UserForm #... @csrf_protect def signup(request): if request.method == "POST": form = UserForm(request.POST) if form.is_valid(): ..

    Django Channels(Web Socket) - 채팅 유저이름 추가하기

    로그인 추가 구현 및 채팅 응용 이번에는 로그인을 구현하여 채팅방에 들어왔을 때 “유저이름님이 들어왔습니다.”와 누가 채팅했는지 구분할 수 있도록 할 예정이다. 먼저 로그인을 구현하기 위해 로그인 페이지와 User모델을 생성해야하므로 다음 명령어를 통해 account app을 하나 만든다. python manage.py startapp account 이후 socekt_project폴더 내의 setting.py와 urls.py에 다음과 같이 추가한다. # socket_project/setting.py INSTALLED_APPS = [ 'account', 'chat', 'channels', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.con..

    Django Channels(Web Socket) - 동기를 비동기로

    비동기방식으로 변경하기 왜 비동기로 바꾸는가? 사실, 기존의 동기방식은 비동기 방식에 비해, I/O가 끝날때 까지 계속 기다려야 하므로 비효율적이라는 단점이 존재한다. 하지만, 비동기로 작성하는 경우 I/O가 끝나지 않아도 즉시 결과값이 리턴된다. 따라서, I/O과 완료되면 완료된것에 따른 콜백함수가 호출되는 방식으로 진행된다. 때문에, 계속 다른일을 할 수 있어서 더 효율적이게 된다. 이제 동기 방식으로된 코드를 비동기 방식으로 바꾸어 보자. 여담으로, Django ORM은 동기방식으로 작동한다. Channels의 문서를 보면 Django ORM이 동기방식으로 작동하기 때문에 이를 비동기로 바꿔주는 함수가 존재한다. 이는 다음에 설명할 때가 있으면 작성해보는걸로... 수정은 간단하다. chat/cons..

    Django Channels(Web Socket) - Channels 사용해보기

    아마 Restful API를 구현해본 사람들이라면 클라이언트측에서 서버로 신호를 보낸 후 데이터를 받는 것은 익숙하겠지만, 서버에서 자발적으로 클라이언트에 신호를 보내지 못해 힘든 경우가 있다. (Ex: 채팅, 푸시 알람) 이때 소켓통신을 제대로 안다면 이런 걱정없이 채팅을 구현할 수 있다. 물론 FCM을 이용해 푸시 알람을 구현할 수 있고, SendBird를 통해 채팅을 구현하는 것도 가능하다. 하지만 그렇다고 알고 쓰는 것과 모르고 쓰는 것은 매우 다르기에 공부해보려 한다. 오늘도 이 분 글을 통해 공부했다. 장고에서 Channels로 웹 소켓을 연동 해보자! 챕 개요 이번 포스팅에서는 실제로 Channel 라이브러리를 이용해서 웹 소켓 요청을 처리하는 부분을 ..

    Django Channels(Web Socket) - 개발환경 설정

    DRF는 해본적이 있지만 소켓통신을 위한 web socket은 구현해본 적이 없어 공부 시작을 Django의 Channels를 통한 소켓통신을 공부하려한다. 먼저 구현에 앞서 환경부터 셋팅하자면 python 3.8.x에서 진행할것이며 아나콘다를 이용해 간단하게 원하는 파이썬 버전으로 가상환경을 구현했다. 아래 두 글을 보고 참고했습니다. https://semtax.tistory.com/61 장고에서 Channels로 웹 소켓을 연동 해보자! 챕터 1 : 세티 개요 이번 시리즈 에서는, Django에서 웹 소켓을 쓸 수 있게 해주는 라이브러리인 Channels을 이용해서 채팅서버를 만들어보는 예제를 만들어보도록 하겠습니다. Channels? Channels 공식 홈페이지에 들..