@@ -50,7 +50,7 @@ const QRCodeScanner = () => {
5050 setTimeout ( ( ) => {
5151 setShowPopup ( false ) ;
5252 setIsScanning ( false ) ;
53- } , 5000 ) ;
53+ } , 1500 ) ;
5454 } ;
5555
5656 useEffect ( ( ) => {
@@ -64,6 +64,15 @@ const QRCodeScanner = () => {
6464 false
6565 ) ;
6666
67+ const verifyWithTimeout = ( payload : any , timeoutMs = 2000 ) => { // 타임아웃 2초
68+ return Promise . race ( [
69+ verifyQR ( payload ) ,
70+ new Promise ( ( _ , reject ) =>
71+ setTimeout ( ( ) => reject ( new Error ( "timeout" ) ) , timeoutMs )
72+ )
73+ ] ) ;
74+ } ;
75+
6776 const handleScan = async ( parsed : any ) => {
6877 const deviceAreaCode = localStorage . getItem ( "deviceAreaCode" ) || "" ;
6978 const deviceAreaId = localStorage . getItem ( "deviceAreaId" ) ;
@@ -85,16 +94,20 @@ const QRCodeScanner = () => {
8594
8695 console . log ( "출입 verify 요청 payload:" , payload ) ;
8796
88- const result = await verifyQR ( payload ) ;
97+ const result = await verifyWithTimeout ( payload ) ;
8998 console . log ( "출입 검증 result:" , result ?. success ) ;
9099
91100 if ( result ?. success ) {
92101 showMessage ( STATUS_MESSAGES . ACCESS_GRANTED ) ;
93102 } else {
94103 showMessage ( STATUS_MESSAGES . ACCESS_DENIED ) ;
95104 }
96- } catch ( err : unknown ) {
97- console . error ( "출입 데이터 전송 실패" , err ) ;
105+ } catch ( err : any ) {
106+ if ( err . message === "timeout" ) {
107+ console . error ( "출입 검증 응답 지연으로 타임아웃 발생" ) ;
108+ } else {
109+ console . error ( "출입 데이터 전송 실패" , err ) ;
110+ }
98111 showMessage ( STATUS_MESSAGES . VERIFY_FAILED ) ;
99112 }
100113 } else {
@@ -111,14 +124,14 @@ const QRCodeScanner = () => {
111124 ( decodedText : string ) => {
112125 if ( isScanningRef . current ) return ;
113126
114- isScanningRef . current = true ; // 10초간 QR 인식 일시차단
127+ isScanningRef . current = true ; // 1.5초간 QR 인식 일시차단
115128 console . log ( "QR 인식됨:" , decodedText ) ;
116129
117130 setIsScanning ( true ) ;
118131 setTimeout ( ( ) => {
119- isScanningRef . current = false ; // 10초 후 해제
132+ isScanningRef . current = false ; // 1.5초 후 해제
120133 setIsScanning ( false ) ;
121- } , 10000 ) ;
134+ } , 1500 ) ;
122135
123136 let parsed : Record < string , any > | string = decodedText ;
124137
0 commit comments