[swift] Reachability를 사용해 특정 도메인의 응답 시간 측정하기

네트워크 연결 상태를 확인하고 특정 도메인의 응답 시간을 측정하는 것은 앱 개발에서 중요한 부분입니다. Swift에서 Reachability 라이브러리를 사용하여 이를 구현해 보겠습니다.

Reachability 라이브러리 설치

우선 Reachability 라이브러리를 설치해야 합니다. CocoaPods를 사용한다면 Podfile에 다음과 같이 추가합니다.

pod 'ReachabilitySwift'

그리고 터미널에서 pod install 명령을 실행하여 라이브러리를 설치합니다.

만약 직접 프로젝트에 추가하고 싶다면, Reachability 라이브러리의 GitHub 페이지에서 최신 코드를 다운로드하고 프로젝트에 추가하세요.

Reachability 클래스 사용하기

Reachability 라이브러리를 사용하여 특정 도메인의 응답 시간을 측정하는 코드는 다음과 같습니다.

import Reachability

func measureResponseTime(for domain: String) {
    let reachability = try! Reachability(hostname: domain)
    reachability.whenReachable = { reachability in
        if reachability.connection == .wifi || reachability.connection == .cellular {
            let startTime = CFAbsoluteTimeGetCurrent()
            if let url = URL(string: "https://\(domain)") {
                let request = URLRequest(url: url)
                URLSession.shared.dataTask(with: request) { _, _, _ in
                    let endTime = CFAbsoluteTimeGetCurrent()
                    let responseTime = endTime - startTime
                    print("Response time for \(domain): \(responseTime) seconds")
                }.resume()
            }
        }
    }
    try? reachability.startNotifier()
}

위 코드에서 measureResponseTime(for:) 함수는 주어진 도메인의 Reachability를 확인하고, 연결이 가능하면 해당 도메인에 대한 응답 시간을 측정합니다.

중요한 부분은 URLSession.shared.dataTask(with:completionHandler:)을 사용하여 도메인에 GET 요청을 보내고, 요청 완료 시간을 측정한 후 응답 시간을 출력하는 것입니다.

사용 예시

이제 위에서 작성한 measureResponseTime(for:) 함수를 실제로 사용해보겠습니다.

measureResponseTime(for: "www.google.com")

위와 같이 함수에 측정하고자 하는 도메인을 전달하면 해당 도메인에 대한 응답 시간이 출력됩니다.

결론

이렇게 Reachability 라이브러리를 사용하여 특정 도메인의 응답 시간을 측정하는 방법에 대해 알아보았습니다. 이를 통해 네트워크 연결 상태를 확인하고 응답 시간을 측정하여 앱의 성능을 개선할 수 있는 기회를 가질 수 있습니다.

참고 문서: ReachabilitySwift GitHub 페이지