버튼을 눌러도 한동안 아무 반응이 없는 화면에는 이런 코드가 숨어 있습니다. button.addEventListener("click", () => { let total = 0; for (let i = 0; i < 2_000_000_000; i++) { total += ...
클라이언트에서도 메시지를 자주 보내야 한다면 SSE와 POST를 조합하는 것보다 양쪽에서 필요할 때 메시지를 보낼 수 있는 연결 하나를 유지하는 것이 더 좋은 선택입니다. 그 연결은 바로 WebSocket을 말하는 것입니다. WebSocket을 고르는 이유는 크게 두 ...
폴링부터 WebRTC까지 실시간 통신 방식을 하나씩 정리하는 시리즈의 세 번재 편입니다. 롱 폴링은 새로운 데이터가 생길 때까지 서버가 요청을 유지하기 때문에 폴링보다 빠르게 데이터를 전달 할 수 있었습니다. 하지만 한 가지 아쉬운 점이 있었습니다. 데이터를 하나 보내...
폴링부터 WebRTC까지 실시간 통신을 하나씩 정리하는 두 번째 게시글입니다. 1편에서는 주기 폴링을 다뤘습니다. 이 글은 학습하며 정리한 내용입니다. 롱 폴링을 직접 서비스에 적용해본 것은 아니며, 자료를 찾아보며 동작 방식과 장단점을 정리했습니다. 1편에서는 주기 ...
폴링부터 WebRTC까지, 실시간 통신 방식을 하나씩 정리하는 시리즈의 첫 번째 글입니다. 널리 알려진 방식이기 때문에 새로운 기술을 소개하기 보다는, 실제 프로젝트에서 어떤 문제를 해결하기 위해 선택했고 사용하면서 어떤 하계를 느꼈는지에 초점을 맞췄습니다. 실시간 데...
프론트엔드에서 인증을 구현하다 보면, 액세스 토큰이 만료된 상태에서 여러 요청이 동시에 401 응답을 받는 상황을 흔히 마주하게 됩니다. 이 글에서는 그 상황이 발생하는 원인부터 해결 방법까지 차례대로 설명합니다. 1. 토큰 구조의 이해 대부분의 현대 웹 서비스는 두 ...