웹 프로젝트 때의 소켓 트러블

이재근·2022년 8월 3일
0

다른 문제점

1.채팅룸 관리는 api요청으로, 실시간 채팅 기능은 sockstio연결로 구성하였으나

“내가 들어가있는 채팅룸 목록”을 불러오기는 최대한 실시간에 가깝게 구현하고자 하여

방을 바꿀 떄 마다 api를 한번씩 호출하는 방식으로 구현하였다.

하지만 api의 unshift()함수가 중복 적용되는 버그가 발견되어 unshift()이외에

“내가 현재 채팅중인 방”을 “내가 들어가있는 채팅룸 목록”의 첫번째에 위치시키는 코드가 필요해졌다.

  1. 채팅방의 인기 해쉬태그 목록 뽑아내기.

채팅방 관련 api설계와 코드작업 시작이 늦게 이루어져

서버를 열고 데이터를 쌓고 있는 와중에 schemas - 채팅방 해쉬태그를 bd에 추가 해야하는 상황이 벌어졌다.

버그나 데이터 꼬임이 생기지 않게 하기 위해 schemas 추가 없이 hashtag 인기순 정렬 기능만 만들고자 헀다.

해결방법

  1. unshift함수를 사용하지않고 새로운 for문을 만들어 대체하여

unshift함수의 “객체 추가” 기능이 아닌 “객체끼리의 위치 변경”으로 기능을 수정하여 사용했다.

  1. 채팅방 models관련 코드를 전부 삭제.

    roomshashtag schemas 관련 코드를 전부 빼고 rooms 의 hashtag만으로 새 배열을 만들어 갯수순으로 정렬하였다.

    /이중포문으로 채팅방전체 안의 채팅방의 해쉬태그를 모두 뽑아와 나열 후 리듀스로 같은 단어를 특정 후 갯수를 밸류값으로 추가 후 for문을 통해 해쉬태그 갯수를 추출 후 내림차순으로 나열, 상위 세개의 수를 뽑아 리듀스 된 객체find()에 사용/

    그리하여 상위 세개의 해쉬태그를 models없이 뽑을 수 있도록 하였다.

profile
하루 고생하면 코드가 나 대신 일해준다.

0개의 댓글