알림 기능에 SSE 를 사용해보고자 합니다.
SSE 사용 이유
- SSE 는 단방향 통신에 적합하고 간단합니다.
- 이벤트 수신용 api 를 만들어두면 백엔드 서버 → sse 서버 → 클라이언트 서버로 이벤트를 수신
- 클라이언트에서 해당 api 의 성격에 따라 다시 조회 api 를 호출하게 하면 됩니다.
- 초대를 받는 행위는 바로 갱신되지 않아도 상관없을 것 같아서 소켓 사용이 굳이 필요없을 것 같습니다.
주의
- HTTP/1.1 사용시 한 브라우저에서에서 한 도메인당 6개까지의 이벤트만 받을 수 있습니다. (HTTP/2는 최대 100개)
- 저희 서비스에서 6개 이상의 이벤트가 생성될 일은 없을듯하여 괜찮지 않을까 생각합니다.
제가 생각하는 초대 기능의 프로세스는 이렇습니다.
초대 기능 프로세스
- 사용자가 초대 버튼을 누름.
- 초대를 위한 DB 를 저장.
- 해당 이메일로 초대 유저가 존재하는지 유무 확인.
- 초대 유저용 DB 생성.
- 클라이언트 서버에 SSE 알림.
이후 클라이언트 서버에서는
클라이언트 로직
- SSE 용 api 에서 백엔드에 알림을 조회하라는 이벤트 수신 받음.
- 조회용 userId 함께 수신받음
- 알림 조회 Api 호출.
해서 알림을 재조회하면 될 것 같습니다.
클라이언트에서의(js) 구현법은 아래 링크 클릭하시면 됩니다.
Server-Sent Events 사용하기 - Web API | MDN