inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

django channels 채팅 기능을 비동기 구현 시, 채팅방 종료 관련 문의입니다.

미해결

consumers.py from django.contrib.auth.models import User from django.shortcuts import get_object_or_404 from channels.db import database_sync_to_async from channels.generic.websocket import AsyncJsonWebsocketConsumer from chat.models import Chat, Room class ChatConsumer(AsyncJsonWebsocketConsumer): def __init__(self): super().__init__() self.group_name = "" self.room = None # .. 생략 .. async def chat_room_delete(self, message_dict): print(message_dict, "chat_room_delete") custom_code = 4000 await self.close(code=custom_code) # .. 생략 .. 채팅방 삭제 요청 시, 실제 데이터를 삭제하는 것이 아니라 채팅방의 상태를 비활성화하도록 is_active=False로 변경처리하게 로직을 작성해놨습니다. 그래서 아래와 같이 signal을 작성하였는데요. @receiver(post_save, sender=Room) def room_on_post_save(sender, instance, **kwargs): if instance.is_active: return print("동작여부 확인") channel_layer = get_channel_layer() print(channel_layer.__dict__) channel_layer.group_send( instance.chat_group_name, { "type": "chat.room.deleted", }, ) 삭제 시, 해당 함수가 실행되긴 하지만 group_send 가 되지 않는지 다른 유저의 브라우저 콘솔창을 보면 방 삭제 관련 메세지가 뜨지를 않습니다. 어디가 잘못되었는지, 어느 부분을 수정해야 하는지 알고 싶습니다.

  • django-channels
  • 채팅방종료
댓글 1 좋아요 0 조회수 238

인기 태그

인프런 TOP Writers

주간 인기글