fix: sse refresh token 만료시 발생하는 error handling #97
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
💡 작업 내용
💡 자세한 설명
SSE 에러가 발생하는 경우는 두 가지 경우이다.
첫 번째는 EventSourcePolyfill을 사용해서 default 45초 동안, 또는 서버와 합의해서 설정한 heartbeat(30분) 시간 동안 아무 요청이 없으면 연결을 끊어서 에러가 발생한다.
onerror 이벤트에서 연결을 close하고 3초뒤에 다시 재연결함으로써 error를 handling 한다.
두 번째는 이번에 해결하려는 재연결을 하는 과정에서 토큰이 만료되는 문제이다.
onerror 이벤트에서 재연결을 할 때 access token이 만료되거나 없으면 refreshToken function을 사용해서 쿠키에 담겨 있는 refresh token을 기반으로 access token을 재발급한다.
하지만 refresh token이 만료된 상황이라면 refreshToken function에서 error를 throw한다.
onerror 이벤트에서는 try...catch로 error를 캐치하여 사용자를 로그아웃 시키고 로그인페이지로 redirect시키고 재로그인을 유도한다.
✅ 셀프 체크리스트
closes #95