Preloader image
DDD

자바

JDK1.8 이상 - JAVA 서버 타임 javascript 실시간 시분 적용 예제

작성자 관리자 (admin)
조회수 3,043
입력일 2024-08-25 18:23:03

JDK1.8 이상
자바 서버의 시간을 자바스크립트에서 실시간으로 표시하려면, 서버에서 시간을 가져와 클라이언트(브라우저)로 전달한 후, 자바스크립트를 사용하여 이를 실시간으로 업데이트하는 방식을 사용할 수 있습니다. 여기서는 Java와 JavaScript를 이용한 예제를 통해 이 과정을 설명하겠습니다.

1. 서버 측 (Java Spring Boot) - 서버 시간 반환

먼저, Java 서버에서 현재 시간을 반환하는 간단한 API를 만듭니다.

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@RestController
public class TimeController {

    @GetMapping("/api/time")
    public String getCurrentTime() {
        // 현재 시간을 가져와서 문자열로 포맷팅합니다.
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return now.format(formatter);
    }
}

위 코드는 /api/time 엔드포인트를 통해 서버의 현재 시간을 yyyy-MM-dd HH:mm:ss 형식으로 반환합니다.

2. 클라이언트 측 (JavaScript) - 서버 시간 가져오기 및 실시간 업데이트

이제 클라이언트 측에서 이 시간을 가져와서 화면에 표시하고, 1초마다 갱신되도록 설정하겠습니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Real-time Server Time</title>
</head>
<body>
    <h1>Current Server Time: <span id="time"></span></h1>

    <script>
        async function fetchServerTime() {
            try {
                const response = await fetch('/api/time');
                const serverTime = await response.text();

                // 서버 시간을 파싱하여 Date 객체로 변환합니다.
                const serverDate = new Date(serverTime);

                // 서버 시간을 출력하는 함수
                function updateTime() {
                    // 현재 클라이언트 시간을 기준으로 서버 시간에 맞게 시분초를 업데이트합니다.
                    const now = new Date(serverDate.getTime() + (new Date() - startTime));
                    document.getElementById('time').innerText = now.toLocaleTimeString();
                }

                const startTime = new Date();
                setInterval(updateTime, 1000); // 1초마다 업데이트
                updateTime(); // 즉시 호출하여 초기 시간을 표시합니다.
            } catch (error) {
                console.error('Failed to fetch server time:', error);
            }
        }

        fetchServerTime(); // 페이지 로드 시 서버 시간 가져오기
    </script>
</body>
</html>

동작 방식

  1. Java 서버는 /api/time 엔드포인트를 통해 현재 서버 시간을 클라이언트에 제공합니다.
  2. JavaScript는 이 시간을 가져와 Date 객체로 변환합니다.
  3. 이후, 자바스크립트는 1초마다 setInterval을 사용해 클라이언트의 시간을 갱신하며, 서버 시간 기준으로 초를 추가해 실시간으로 화면에 시간을 표시합니다.

이 방식은 클라이언트에서 서버 시간을 정확하게 보여줄 수 있습니다.