안녕하세요! 항해99 5기 8조 "코알라” 팀입니다
“코알라”는 코딩 관련하여 질문 사항이 있는 사람이 채팅과 게시글을 통해 질문 하고 응답을 받을 수 있는 사이트입니다.
이런 분에게 좋아요!👍🏻
“빠르게 해결하고 싶은데 답변이 안달려 답답해요”😮💨
“에러가 발생했는데 어떻게 해결해야할지 모르겠어요”🥲
“자료는 많은데 어떻게 해결 방법을 적용해야할지 복잡해요”😵💫
당신이 직면한 문제! 당신만의 문제가 아닙니다. 공유하고 함께 해결해요! 코딩! 알려주라~
👉🏻Web Site : https://www.co-ala.com
(d2drmli0uyajuu.cloudfront.net , 도메인 연결 전 주소입니다. 도메인 접속이 불가하시면 이쪽 주소로 접근바랍니다)
바로가기 -> https://youtu.be/Vwd4n9a205M
(1) 채팅 비속어 필터링
1. 문제 발생 : 처음 비속어 필터링을 구현할 때 매 채팅 시마다 DB에 저장한 비속어들을 리스트로 받아서 반복문을 통해 비속어 감지하여 속도 저하
2. 원인 : 비속어 DB는 자주 변하는 것이 아니고, DB를 계속해서 조회
3. 해결 : 인메모리 디비를 활용할 수 있다고 생각하여 비속어 디비에서 레디스로 내려받아 저장을 하였고,
데이터 구조를 리스트가 아닌 해쉬맵으로 받아 containsValue 메소드를 통해 비속어를 감지하여 반복작업 감소
(2) 채팅 참여 인원수 확인
1. 문제 발생 : 채팅 참여 인원은 정상적으로 카운팅이 되었지만 채팅 퇴장 인원은 정상적으로 카운팅이 안되는 문제 발생![스크린샷 2022-04-07 오후 7 19 02](https://user-images.githubusercontent.com/94433709/162177693-bd76da2b-ed2d-4a10-8df2-a3c35bb3f2f8.png)
- 원인 : 연결이 끊어지는 경우 구독 정보를 리턴해주지 않아 유저가 채팅방 퇴장 시 정상적으로 카운팅이 되지 않음
- 해당 채팅을 구독하면 Message Header의 destination정보를 키값으로 유저 카운팅을 했지만
연결이 끊기면 Message Header에 destination정보가 없어 채팅 참여 인원수 카운팅을 할 수 없는 원인을 찾음
- 해결 : 유저가 구독한 채팅방 정보와 유저 SessionId를 매핑하여 저장
- 유저가 채팅방을 구독한 경우와 연결을 끊었을 경우 Message Header(메시지 헤더)에서 어떤 정보를 return해주는지 로그를 남겼고 모두 SessionId를 return 해주는 것을 확인했습니다. 유저가 구독한 채팅방 정보와 SessionId를 매핑하여 저장하였고 퇴장 시 해당 SessionId로 매핑해두었던 채팅방 정보를 조회하여 해당 키값에서 유저 카운팅을 했습니다.
![스크린샷 2022-04-07 오후 7 18 01](https://user-images.githubusercontent.com/94433709/162177524-b763e658-2e3f-4410-a16d-0bf0f74e00b8.png)