본문 바로가기
TIL (Today I Learned)

[TIL] Ping

by Bokoo14 2024. 5. 10.

[참고]

PingPong

  • PingPong을 사용하는 케이스는 일반적으로 웹소켓에서 사용
  • 앱에서 서버에게 ping을 보내고, 서버로부터 pong을 받는 로직
    • 만약 서버로부터 pong이 앱에서 설정한 특정 시간안에 안오면 lost connection으로 판단
  • 주의할점
    • 앱에서 서버에서 ping을 보낼때 throttle 적용 (만약 pong이 올때마다 ping을 날리면 짧은순간에 수많은 통신이 이루어짐)

 

PingPong 구현 아이디어

  • ping을 보내는 부분
    • 1) API.requestPing 수행 -> response를 받으면 다시 ping을 보내는 코드를 구현
    • 2) 서버에 ping을 보낼땐 항상 timer를 사용하여 시간을 체크하고 타이머가 다 된 경우, completion 처리를 수행
  • 타이머는 Swift에서 제공하는 Timer를 사용하지 않고 Observable<Int>.timer(_:scheduler:)를 사용하여 간편하게 구현
    • Swift에서 제공하는 Timer를 사용하면 deinit할때도 timer를 따로 invalidate()시켜줘야 하는 코드가 들어가므로 번거로움
    • Observable의 timer와 disposeBag을 적절히 사용하면 매우 편리하게 구현이 가능

[참고]

disposeBag이란?: https://babbab2.tistory.com/186

 

RxSwift) Dispose /Disposable / DisposeBag 이해하기

안녕하세요, 소들입니다 XD hm.. 요즘 제 블로그 댓글의 대부분이 소들님은 개발 공부를 어떻게 하셨나요? 에 대한 내용인듯 한디.. 교과서.. 위주로.. 공부하셈.. 두번하셈.. 라고 할뻔... ㅎㅎ 나중

babbab2.tistory.com

 

ping API 개요

  • ping은 Packet Internet Groper의 약어로, 컴퓨터 네트워크 상태를 점검하고 진단하는 명령어
  • ping API는 이러한 ping 기능을 제공하는 API로, 클라이언트가 서버에 ping 요청을 보내면 서버가 응답을 보내는 방식으로 동작
  • 주로 서버의 가용성을 확인하거나 네트워크 연결 상태를 점검하는 데 사용된다.

 

ping API 구현

  • ping API 엔드포인트는 일반적으로 매우 간단하다.
  • 클라이언트가 ping 요청을 보내면 서버는 "pong"이라는 텍스트를 응답으로 보낸다. 
  • 이를 통해 서버가 정상적으로 작동 중인지, 네트워크 연결이 원활한지 확인할 수 있다.

 

ping API 활용

  • 서버의 가용성 모니터링: 주기적으로 ping API를 호출하여 서버의 상태를 확인할 수 있다.
  • 네트워크 문제 진단: ping API를 통해 네트워크 지연 시간, 패킷 손실 등을 확인할 수 있다.
  • 로드 밸런싱: 여러 서버에 대한 ping 응답 시간을 비교하여 최적의 서버를 선택할 수 있다.
  • 서비스 상태 확인: 사용자가 직접 ping API를 호출하여 서비스 상태를 확인할 수 있다.

 

ICMP 프로토콜

  • ping 명령어는 ICMP(Internet Control Message Protocol) 프로토콜을 사용
  • ICMP는 IP 네트워크에서 오류 메시지, 제어 메시지 등을 전송하는 데 사용되는 프로토콜
  • ping 명령어는 ICMP Echo Request 메시지를 보내고, 대상 호스트가 ICMP Echo Reply 메시지로 응답한다.

 

 

'TIL (Today I Learned)' 카테고리의 다른 글

[iOS] viewDidLoad vs loadView  (0) 2024.05.20
[CS] 클린코드  (0) 2024.02.18
[CS] 리팩토링이란  (0) 2024.02.18
[Swift] MVVM 패턴  (0) 2024.02.17
[CS] 동기(Sync), 비동기(Async)  (1) 2024.02.16