-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FE] 채팅 시 SSE에 의해 수신되는 내용이 늦게 반영되는 문제 해결 #960
The head ref may contain hidden characters: "fix/\uCC44\uD305\uCC3D-SSE-\uC989\uC2DC-\uAC31\uC2E0-\uC548\uB418\uB294-\uBB38\uC81C-\uD574\uACB0"
Conversation
로컬 환경에서 SSE로 정해진 메시지를 보내주는 Node.js 서버를 실행하고, 2초마다 로컬에 메시지를 전송하도록 하여 테스트를 해 본 결과이다. 고치기 전_2024_03_23_23_31_47_484.mp4
고친 후_2024_03_23_23_38_02_917.mp4
|
문제 발생 원인
기존 방식의 경우, queryClient.setQueryData<InfiniteData<ThreadsResponse>>(
['threadData', teamPlaceId],
(old) => {
if (old) {
old.pages[0].threads = [newThread, ...old.pages[0].threads];
return old;
}
},
); 새로운 방식의 경우, queryClient.setQueryData<InfiniteData<ThreadsResponse>>(
['threadData', teamPlaceId],
(oldData) => {
if (oldData) {
const newFirstPageThreads: ThreadsResponse = {
threads: [newThread, ...oldData.pages[0].threads],
};
const newData = {
pageParams: oldData.pageParams,
pages:
oldData.pages.length === 1
? [newFirstPageThreads]
: [newFirstPageThreads, ...oldData.pages.slice(1)],
};
return newData;
}
},
); 삽질하면서 알아낸 건데 이런 게 있는 줄은 몰랐다... |
- 기존 로직의 경우 이전 값인 old의 값을 그대로 변경해 참조가 유지되었음 - 참조가 그대로 유지되면 tanstack-query는 값이 변경되지 않았다고 판단되어 갱신이 일어나지 않을 수 있음 - 따라서, 새로운 변수 newThread를 만들어 이를 반환하는 것으로 참조를 변경
f9c97b6
to
812ae4b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
좋은 정보공유와 멋진 버그픽스 감사합니다.
요몇주간 바빠서 너무 늦게 확인한 것 같아서 미안하네,,,ㅠㅠ
언제든지 기능 피알올려줘도 돼! 최대한 빨리빨리 확인해볼게
수고 많았어 토끼야~!
[FE] 채팅 시 SSE에 의해 수신되는 내용이 늦게 반영되는 문제 해결
이슈번호
PR 내용
본 PR에서는 새로운 채팅을 입력할 때, 또는 SSE로부터 새로운 메시지를 수신받을 때 바로 새로운 채팅이 제대로 반영되지 않는 문제를 해결하였다.
원리 및 작동 화면은 하단의 코멘트에서 보충하여 설명한다.