Python/Django

[Django] 채팅 시스템 (3) UUID가 포함된 URL을 Channels Websocket이 수신하는 법

yubi5050 2022. 7. 22. 09:45

관련 글

Django Channel 라이브러리와 적용 전/후의 구조 비교 (링크)

Django Channel을 이용한 채팅 시스템 구현 (링크)

 

Trouble Shooting

Django Channels을 이용하여 채팅 시스템을 구현 하던 중 웹 소켓 API에 UUID를 넣어서 전송하게 되면 아래와 같은 오류가 나오게 된다.

 

문제점 : "WebSocket connection to 'ws://127.0.0.1:8000/ws/chat/6647dbe4-2e61-4e78-8b8c-8ebc6676626b/ ' failed"

 

websocket Error

 

 

해결 방법 : Django의 routings.py (or urls.py) 에서 uuid를 받을 수 있는 정규식으로 변환 (두번째줄) 해 주면 된다.

from django.urls import re_path
from . import consumers

websocket_urlpatterns = [
    # re_path(r'ws/chat/(?P<room_name>\w+)/$', consumers.ChatConsumer.as_asgi()), # 일반 ver
    re_path(r'ws/chat/(?P<room_name>[A-Za-z0-9_-]+)', consumers.ChatConsumer.as_asgi()) # uuid ver
]