개발 slecs

계약서 승인·반려 상태를 새로고침 없이 실시간 감지

목차

계약서 승인/반려 실시간 감지 폴링 추가

계약서 승인/반려 실시간 감지 폴링 추가 기능을 구현했음.

배경

계약서 승인/반려 상태가 변경됐을 때 사용자가 새로고침 없이 결과를 바로 알 수 있어야 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

첫 댓글 달아줘.