[python] Django의 웹소켓(WebSocket) 사용 방법은 어떻게 되는가?

웹소켓은 실시간 통신을 위한 프로토콜로, Django에서도 웹소켓을 사용할 수 있습니다. Django에서 웹소켓을 사용하기 위해서는 몇 가지 단계를 거쳐야 합니다.

1. Django Channels 설치하기

웹소켓을 Django에서 사용하기 위해서는 Django Channels 패키지를 설치해야 합니다. 다음 명령어를 사용하여 Django Channels를 설치할 수 있습니다.

pip install channels

2. 프로젝트 설정 변경하기

Django Channels를 사용하려면 Django 프로젝트의 설정을 변경해야 합니다. settings.py 파일에서 다음과 같이 변경해주세요.

INSTALLED_APPS = [
    ...
    'channels',
    ...
]

ASGI_APPLICATION = '<프로젝트명>.asgi.application'

3. Consumer 작성하기

웹소켓 요청을 처리하기 위해 Consumer를 작성해야 합니다. Consumer는 Django Channels 프레임워크에서 제공하는 클래스로, 웹소켓 요청을 처리하고 응답하는 역할을 담당합니다. Consumer를 작성하기 위해서는 다음과 같은 단계를 실행해야 합니다.

from channels.generic.websocket import WebsocketConsumer

class MyConsumer(WebsocketConsumer):
    def connect(self):
        # 웹소켓 연결 시 실행될 코드
        pass

    def disconnect(self, close_code):
        # 웹소켓 연결 종료 시 실행될 코드
        pass

    def receive(self, text_data):
        # 메시지를 받았을 때 실행될 코드
        pass

    def send_message(self, message):
        # 메시지를 보낼 때 실행될 코드
        pass

4. 라우팅 설정하기

Consumer를 라우팅하기 위해서는 routing.py 파일을 생성하고 다음과 같이 작성해야 합니다.

from django.urls import path
from . import consumers

websocket_urlpatterns = [
    path('ws/my_consumer/', consumers.MyConsumer.as_asgi()),
]

5. 웹소켓 엔드포인트 추가하기

마지막으로, 웹소켓 요청에 대한 엔드포인트를 추가해야 합니다. Django의 URL 설정 파일(urls.py)에서 다음과 같이 작성해주세요.

from django.urls import re_path

from . import consumers

websocket_urlpatterns = [
    re_path(r'ws/my_consumer/$', consumers.MyConsumer.as_asgi()),
]

이제 Django에서 웹소켓을 사용할 준비가 되었습니다. 웹소켓 연결을 수신하고 메시지를 주고받기 위한 로직을 MyConsumer 클래스의 각 메소드에 구현하면 됩니다.

추가로, 클라이언트 측에서 웹소켓 연결을 설정하고 메시지를 보내는 로직을 작성해야 합니다. 클라이언트에서는 JavaScript의 WebSocket 객체를 사용하여 웹소켓 연결을 생성하고 서버로부터 메시지를 주고받을 수 있습니다.

위의 단계를 따라하면 Django에서 웹소켓을 사용할 수 있으며, 실시간 통신 기능을 구현할 수 있게 됩니다.

참고 자료: