계약서 승인·반려 상태를 새로고침 없이 실시간 감지
목차
계약서 승인/반려 실시간 감지 폴링 추가
계약서 승인/반려 실시간 감지 폴링 추가 기능을 구현했음.
배경
계약서 승인/반려 상태가 변경됐을 때 사용자가 새로고침 없이 결과를 바로 알 수 있어야 UX가 자연스러움. 관리자가 승인하면 사용자 화면에 즉시 반영되는 게 이상적임.
구현 방식
폴링 방식으로 구현했음. 3초마다 서버에 상태를 조회해서 PENDING이 아닌 상태로 변경되면 UI를 갱신하고 폴링을 멈춤.
코드 예시
let pollCount = 0;
const MAX_POLL = 120; // 6분 최대
const poller = setInterval(async () => {
if (++pollCount > MAX_POLL) { clearInterval(poller); return; }
const res = await fetch('/api/contract/status?id=' + contractId);
const { status } = await res.json();
if (status !== 'PENDING') {
clearInterval(poller);
if (status === 'APPROVED') showApprovedUI();
else showRejectedUI();
}
}, 3000);
검토 포인트
WebSocket이 더 실시간에 가깝지만, 연결 관리 오버헤드가 있음. 승인이 빈번하지 않은 경우엔 폴링이 더 단순하고 안정적임. 최대 폴링 횟수를 제한해서 무한 루프를 방지했음.
정리
사용자가 새로고침 없이 계약 상태 변경을 확인할 수 있게 됐음. 운영자와 사용자 양쪽의 커뮤니케이션 비용이 줄었음.
다음
댓글 0
첫 댓글 달아줘.