소프트웨어 개발/Scala - Functional

Django Websocket구현하기

늘근이 2015. 4. 27. 20:31

퇴근후 저녁 8시부터 시작했다.

 

사실, 서버에 들어가서 모든 데이터를 하나씩 돌리는것은 정말 효율이 별로다.

40초가 걸리는걸 1초로 튜닝해놨어도 그걸 30분씩 돌리고 앉아있으면 짜증나고,

중간에 한번이라도 잘 못 되면 모든 데이터 작업이 날라간다는 점은, 별로 그다지 효율적이 못하다고 생각한다.

따라서 최신기술은 WebSocket을 이용해서 비동기통신을 구현하는게 시급하다.

 

왜 WebSocket이냐구? 이미 지나간 비동기 ajax는 재미가 없기 때문이다.

 

 

일단 시간이 없으니 구글에 쳐서 아무거나 websocket비슷한걸을 찾아보기로 한다.

 

일단 후보는 다음과같아 보인다.

 

 

 

 

여기서 한번 시작을 해보자. 일단 도큐멘테이션이 없으면 안된다.

redis를 택해보기로 하자.

 

http://django-websocket-redis.readthedocs.org/en/latest/

 

여기서 받아볼수있다. 아 너무 도큐멘테이션이 많은것도 귀찮다. omnibus로 갈아타자

 

http://django-omnibus.readthedocs.org/en/stable/server/installation.html#quickstart

 

콘솔에서 다음과 같이 쓴다. (관리자모드 획득은 기본이다)

 

$ pip install django-omnibus 

 

pip란 Python Install Package의 준말??인가?? 미안 모르겠다...

 

인스톨을 다했으면 다음과 같은 스크린샷이 뜰것이다.

 

 

 

 

이제 장고에 들어가서 세팅을 좀 해보자.

 

 

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
     'omnibus',

 

이렇게 뒤에 표시해준다.

 

자 다음은, 더 세팅을 해준다.

 

 

TEMPLATE_CONTEXT_PROCESSORS = (
    # other context processors
    'omnibus.context_processors.omnibus',

 

이건 그냥 냅다 넣어야 한다.

 

그리고 SockJS를 설치하라는데 엄청 귀찮지만 해준다.

 

 

$ pip install sockjs-tornado

 

그리고 세팅에 추가해준다.

 

 

 OMNIBUS_ENDPOINT_SCHEME = 'http'  # 'ws' is used for websocket connections
OMNIBUS_WEBAPP_FACTORY = 'omnibus.factories.sockjs_webapp_factory'
OMNIBUS_CONNECTION_FACTORY = 'omnibus.factories.sockjs_connection_factory'

 

됐다 이제 쓸수있다.

 

하지만 이렇게 간단하지 않을거라는걸 믿는다.

 

config에 관련된 세팅은 다음과 같은 링크에서 확인한다.

 

http://django-omnibus.readthedocs.org/en/stable/server/configuration.html

 

그리고 서버를 키라는데?? 한번 켜보자. 뭔가 불안하다. 뭔가 키는 형식이 아니라 그냥 템플릿에서 자연스럽게 녹아나야 할텐데..? 이렇게 뭔가 키고 끄는게 늘을 때마다 세팅에 걸리는 시간이 대략 30분은 걸린다. 나의 시간은 너무나도 소중한데 30분은 롤한판하고도 남는시간일수도 있다. 일단 거의 다 온것같으니 해달라는대로 좀 해준다.

 

 

$ python manage.py omnibusd

 

 

일단 에러가 났다. 불길한 예감이 적중한다. 10분안에 안되면 과감히 포기한다.

 

 

10분이 지나지 않았지만 과감히 포기한다.