inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편

(실습) 웹소켓 Liveblog

안녕하세요. Layer를 포함한 이번 예제에서 요청~응답 간 프로세스가 알고 싶습니다.

441

양념치킨

작성한 질문수 8

0

이전에 웹소켓 동작방식에 대해 남겨주신 답변 덕에 기본적인 동작방식은 이해했습니다.

다만 이번 예제에서 Layer가 개입되니 다시 헷갈리기 시작하네요 ㅠ

  1. Post 인스턴스는 Mixin을 통해 상속받은 CHANNEL_LAYER_GROUP_NAME를 가지고 있고 시그널을 통해 channel_layer_group_send를 호출하여 자신이 속한 그룹으로 메세지를 보내는 것 까지는 이해했습니다.

  1. Layer는 서버와 클라이언트(Consumer) 중간 과정에 존재하며, 그룹명으로 구별하여 메세지 전송 대상을 구별하는 용도이고(즉 서로 다른 Consumer instance들을 묶어주는 역할), 이번 예제에서는 Redis가 그 역할을 수행하고 있다고 생각하면 될까요?

뭔가 알듯 말듯하긴 한데 확신이 안 서네요

django-channels django python

답변 1

1

이진석

안녕하세요.

말씀하신 내용이 맞구요.

Overview 수업에서 아래 슬라이드가 있습니다.

image

장고 채널스의 채널 레이어에서 Redis 백엔드는 Redis의 Pub/Sub 기능을 활용합니다.

Pub은 Publish의 약자로서 "메세지 발행"을 의미하며, Sub는 Subscribe의 약자로서 "메세시 구독"을 의미합니다. Redis에서는 "liveblog" 이름의 그룹에 메세지를 발행하면, "liveblog" 그룹 구독자들에게 메세지를 전달해줍니다.

살펴보시고, 긴가민가하신 부분을 이어서 질문 남겨주세요.

화이팅입니다. :-)

0

양념치킨

빠른 답변 정말 감사합니다!

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

0

168

2

안녕하세요 선생님,

0

96

1

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

0

107

1

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

0

208

3

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

0

171

2

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

0

141

2

Consumer Instances 관련 질문 있습니다.

0

74

2

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

0

80

2

기능 구현 질문 드립니다.

0

117

1

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

0

159

2

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

0

137

2

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

0

125

2

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

0

92

1

질문이 있습니다.

0

165

1

구독 채팅 구현

0

215

1

헷갈려서 질문드립니다.

0

360

2

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

1

277

1

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

0

264

1

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

0

364

1

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

0

361

1

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

0

617

1

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

0

329

1

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

0

436

1

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

0

429

1