프로그래밍/Js

크롬 비활성화된 탭 네트워크(웹소켓) 끊어지는 현상 Intensive Wake Up Throttling

소행성왕자 2023. 3. 7. 10:56

현재 크롬에서 웹소켓으로 전문을 송수신 하고 있습니다.

콘솔로그로 1초마다 지켜보고 있고 30초마다 서버와 접속하여 끊어지는 현상을 방지하고 있습니다.

그런데

소켓 연결된 탭을 비활성화 즉 다른 탭을 열고 작업을 하고 있으면 12분~13분 후에 소켓이 끊어져버립니다.

onClose 에서도 감지를 못합니다.

Intensive Wake Up Throttling

Chrome 브라우저가 최소화되거나 초점이 맞지 않은 상태에서 5~6분 후에 웹소켓 연결이 끊길 수 있습니다. "Connection closed: 1001 Going Away (The endpoint is going away due to a server failure or client navigation), clean closure: true" 메시지와 함께 세션 연결이 끊어집니다.

원인:

2020년 7월에 배터리 수명을 절약하기 위한 Chrome 기능이 도입되었습니다. "Javascript 타이머 깨우기의 집중 조절"은 1분(60초) 간격으로 조절합니다. 자세한 내용은 여기를 참조하세요: https://www.chromestatus.com/feature/4718288976216064

이는 클라이언트 프로필에서 30초로 설정된 기본 웹 전송 비활성 시간 초과 설정과 충돌합니다.

Javascript 타이머가 1분 간격으로 제한되면 웹 클라이언트는 기본 30초 비활성 제한 시간 내에 브로커에 keepalive 메시지를 보낼 수 없습니다. 이 문제를 방지하려면 Chrome에서 "Javascript 타이머 깨우기 집중 조절" 기능을 비활성화하거나 inactivity-timeout을 60초보다 큰 값으로 변경하십시오.

 

참고 : 

https://solace.community/discussion/694/client-websocket-disconnects-when-browser-is-minimized-or-not-in-focus-chrome

https://developer.chrome.com/blog/timer-throttling-in-chrome-88/