인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

sunnnwo's profile image
sunnnwo

asked

Creating a Web Chat Service with Python/Django (Feat. Channels) - Basics

View the list of chat rooms in the waiting room

기능 구현 질문 드립니다.

Written on

·

51

0

 선생님 안녕하세요,

기능 구현하는데 힌트 좀 받고 싶어서 질문 드립니다.

  1. 메세지 차단 기능

  2. 초대기능

  3. 접속유저 부분에서 프로필 확인 기능을 넣고 싶습니다.

아직 장고가 손에 붙질 않아서.. 어느 부분을 수정해야할지 감이 오지 않습니다. 한번 해볼수있게 힌트 좀 부탁드려도 될까요.

감사합니다.

pythondjangodjango-channels

Answer 1

1

pyhub님의 프로필 이미지
pyhub
Instructor

안녕하세요.

질문에 감사드립니다.

일단 제가 러프하게 답변을 써봤습니다. 참고해보시고 추가 질문 주시면, 저도 같이 고민해보겠습니다. :-)

 

1) 메시지 차단 기능

Consumer 에서는 Redis pub/sub 기능을 통해 그룹 내 유저들에게 모두 전파됩니다. 그러니 특정 유저의 Consumer 인스턴스에게 전파되는 것을 막을 수는 없구요.

type="chat.message" 메시지를 보내면, 그룹 내 유저들의 chat_message 메서드가 호출이 되는 데요. chat_message 메서드 내에서 차단여부를 확인하고 차단 상황에서는 send_json 메서드를 호출하지 않도록 하여, 메시지 전송을 막을 수 있겠습니다.

2) 초대 기능

초대는 특정 채팅방에 대한 링크를 전달하는 것으로 기본적인 초대는 가능하지 않을까 싶습니다. 초대받은 사람이 그 링크로 접속하면 채팅방에 들어오게 되는 거죠.

3) 접속 유저 부분에서 프로필 확인 기능

접속 유저 목록에서 프로필 확인 기능을 말씀하시는 것일까요? 이 부분은 채팅과는 별개로 웹프론트엔드 UI 구현이 필요해보입니다. 바닐라 JS로 구현하실 수도 있으시겠구요. 저는 요즘 alpine.js 와 htmx에 빠져있습니다.

 

살펴보시고 댓글 남겨주세요.

화이팅입니다. ;-)

sunnnwo님의 프로필 이미지
sunnnwo
Questioner

한번 해보고 있는데, 도커 및 frontend 파트를 구현한 팀원이랑 의사소통의 부재로 적용이 어렵네요 ㅋㅋ 제가 스위스 살면서 공부중이라 팀원들간의 의사소통이 원활하지 못합니다ㅜㅜ

pyhub님의 프로필 이미지
pyhub
Instructor

그러시군요. ㅠ_ㅠ.

질문을 좀 더 구체화해서 주시면, 제가 좀 더 좋은 답변을 드릴 수 있을 듯 합니다.

"접속 유저 부분에서 프로필 확인 기능"은 dropdown과 같은 UI를 생각하시는 것일까요.
https://devdojo.com/pines/docs/dropdown-menu

웹 백엔드와 웹 프론트엔드 영역에 대해서 구별해서 생각하시는 능력을 키우시면, 웹 개발에 도움이 됩니다.

살펴보시고, 댓글 남겨주세요.

화이팅입니다., :-)

sunnnwo님의 프로필 이미지
sunnnwo
Questioner

넵 정확하십니다. 감사합니다. 제가 생각했던거랑 좀 다른 부분은 저는 그냥 chat기능을 메인프로그램에 startapp chat 으로 만들어 붙여넣기 하고 settings.py에 추가하면 끝나는줄 알았는데, 그게 아닌거같습니다. 혹시 만든 앱을 추가할때 고려해야할 사항같은게 있을까요? 이렇게 질문드리니 엄청 추상적인데, 그냥 간단한게 말씀해주셔도 알아먹도록 하겠습니다.

pyhub님의 프로필 이미지
pyhub
Instructor

장고 앱은 파이썬 팩키지를 팩키징하는 하나의 단위인 것 뿐입니다. settings.INSTALLED_APPS 리스트에 장고 앱을 등록하면, 해당 앱 내의 모델/마이그레이션/템플릿/static/management 등은 자동 인식합니다. <= 여기까지가 앱 등록 만으로 자동으로 이뤄지는 부분입니다.

그 외에

  1. 장고 프로젝트가 WSGI 기반이라면 ASGI 기반으로 변경해주셔야 합니다. 이 부분은 장고 앱 외적인 부분이니까 설정해주셔야 합니다.

  2. migrate가 안 되셨다면 migrate 해주셔야하구요.

  3. chat.urls 는 프로젝트의 ROOT 패턴 리스트에 추가해주셔야 하구요. 웹소켓의 경우 websocket_urlpatterns 도 asgi.py 에 추가해주셔야 합니다.

살펴보시고, 댓글 남겨주세요.

화이팅입니다. ;-)

sunnnwo's profile image
sunnnwo

asked

Ask a question