본문 바로가기

항해99_10기/105일의 TIL & WIL

[7주차] [20221229] 1주일 notion clone 챌린지 회고

1주일간 노션 클론 챌린지를 진행했다.

프론트 개발을 맡은 팀원들이 많이 고생했고, 덕분에 성공적으로 프로젝트가 마무리되었다.

 

조금 아쉬운 부분은, 1시간마다 서버에서 페이지 정보를 자동 저장하고, 프론트에서 브라우저의 페이지를 자동 갱신해줘야 하는데, 이부분은 시간이 없어서 제대로 구현하지 못했다.

 

서버에서는 누가 socket에 접속을 했든 안했든 상관 없이 매 1시간마다 최신 document를 setInterval 함수 안에서 db에 자동 저장하고, 저장 직후에는 document를 null로 할당하는 구조였다.

그런데, 문제는 document를 null로 할당할 때, 서버에서 일어나는 이 이벤트를 감지해서 접속한 모든 socket의 페이지에 반영을 해줘야 하는데, 그게 안된다는 것이었다.

 

socket 코드 블럭 안에 어떤 함수를 정의하더라고 이를 전역에서 직접 접근할 수 없었던 것이다. 쉽게 코드로 예를 들자면 아래와 같은 상황이었던 것이다.

function socket() {
    function insideSocket() {
        console.log('insideSocket')
    }
}

insideSocket()

결국 이걸 해결할 수 있는 방법은, 프론트에서 일정 시간마다 서버의 document 값을 요청하도록 하는 api를 짜거나,

혹은 메인 서버 뒤에 알람 서버를 한대 더 두어 document 값이 갱신되었다는 알림을 프론트로 보내도록 하는 방식을 사용해야 한다는 결론을 내렸다.

 

이번주차 노션 클론 챌린지를 진행하면서, 실전에서는 이 알람 서버를 꼭 한 번 구현해보고 싶다는 생각을 했다.

 

 

bla-bla-Notion

bla-bla-Notion has 2 repositories available. Follow their code on GitHub.

github.com