inflearn logo
강의

Course

Instructor

Building a Web Chat Service with Python/Django (Feat. Channels) - Basic Course

메세지 리액션 : 좋아요. 질문 드립니다.

Resolved

359

kw42460353572

4 asked

0

  1. 좋아요 구현을 위해 append_message 함수에서 icon 생성 시 addEventListener를 등록하였습니다.

    append_message(message, pk , sender, time, img){
        const like_icon = document.createElement('i');
        like_icon.id = `like-icon-${pk}`;
        like_icon.className = 'fa-regular fa-heart';
        like_icon.addEventListener('click', () => {this.like_msg(pk)});
    ...
    }
  2. like_msg에서 removeEventLister를 통해 기존에 등록된 click를 해제하고 새로운 이벤트를 등록하였습니다.

    like_msg(pk){
        const like_icon = document.querySelector(`#like-icon-${pk}`);
        like_icon.removeEventListener('click', () => {this.like_msg(pk)});
        like_icon.addEventListener('click', () => {this.dislike_msg(pk)});
        this.ws.send(JSON.stringify({
             type : 'chat.message.like',
              pk : pk
         }))
    }
    1. 사진과 같이 좋아요는 잘 작동합니다.

  3. 다시 dislike를 하려면 계속 like_msg 이벤트가 동작합니다.

    1. like_icon을 통해서 하트를 변경하였습니다.

      case 'chat.message.like':
          this.like_icon(pk, cnt);
          break;
  4. event를 삭제하는 시점이 잘 못된것일까요? 제대로 삭제가 안 되더라구요. like_icon에서도 removeEventListener를 실행했었는데 동일한 결과가 나왔습니다. 어떤 시점에서 이벤트 리스너를 해제해야 할까요?

python django django-channels

Answer 1

1

pyhub

안녕하세요.

버튼 하나에 dislike와 like 리스너를 별도의 함수로 등록하지 마시고,

하나의 함수 내에서 dislike와 like를 분기해서 처리하시는 것은 어떨까요?

혹은 버튼 2개를 만드시고 각각 dislike와 like를 처리하시는 것도 한 방법입니다.

살펴보시고 질문 남겨주세요.

화이팅입니다. :-)

1

kw42460353572

분기로 처리하니 깔끔해지고 오류났던 부분도 원인을 찾아 해결하였습니다. 감사합니다!

유저목록 확인 문제 질문드립니다.

0

164

2

안녕하세요 선생님,

0

91

1

하나의 채팅방만 만들어보려고 하는데 잘 안되고 있습니다.

0

103

1

도커와 연동 관련 질문드립니다.

0

205

3

채팅방 참여자 목록 - 채팅방 입장/퇴장 실시간 이벤트 처리

0

165

2

안녕하세요, onopen() 문제로 질문드립니다.

0

137

2

Consumer Instances 관련 질문 있습니다.

0

72

2

안녕하세요, 요청은 채널스에서 먼저 받고, http 요청은 장고를 통해서 처리한다고 하셨는데요.

0

79

2

기능 구현 질문 드립니다.

0

115

1

git에 있는 코드를 다운 받아 실행 해봤는데 에러가 났습니다.

0

154

2

ValueError: No route found for path 'ws/liveblog/'.

0

134

2

지정 경로에 템플릿 파일 만드는 단축키가 뭔가요?

0

121

2

채팅 내역을 영구적으로 저장하고 싶습니다.

0

89

1

질문이 있습니다.

0

164

1

구독 채팅 구현

0

213

1

헷갈려서 질문드립니다.

0

357

2

@login_required 장식자를 적용한후에는 로그인을 성공하면 채팅방으로 어떻게 이동을 하는 건가요?

1

276

1

docker run -d --restart always --name redis7 --publish 6379:6379 redis:7

0

261

1

websocket 자바스크립트 클라이언트 구현?

0

361

1

{유저명}님이 메세지 입력 중입니다. 메세지 질문드립니다.

0

610

1

채팅 로비에서 유저수 노출을 위하여

0

326

1

채팅방에서 마지막 유저가 나가면 채팅방 자동 삭제 질문드립니다.

0

432

1

동기방식의 consumer 클래스와 비동기방식의 consumer클래스의 차이가 뭔지 궁금합니다.

0

425

1

라이브러리 인식

0

416

2