Jaebi의 Binary는 호남선

[Swift] 실시간 데이터 표현 본문

Swift

[Swift] 실시간 데이터 표현

jaebijae 2025. 2. 4. 20:57

목차

    HTTP / SSE / WebSocket

    특징 HTTP SSE (Server-Sent-Events) WebSocket
    통신 방향 단방향 (Client → Server) 단방향 (Server → Client) 양방향 (Client ↔︎ Server)
    연결 방식 요청/응답 반복 지속적인 HTTP 연결 초기 Handshake후 WebSocket 프로토콜 사용
    실시간성 낮음 (주기적 요청 필요) 높음 (서버에서 실시간으로 이벤트 푸시) 매우 높음 (양방향 실시간 통신 가능)
    오버헤드 높음 (매번 HTTP 요청/응답) 낮음 (하나의 지속적인 연결 사용) 매우 낮음 (헤더가 간단하고 연결 유지)
    유지 연결 요청시 새 연결 생성 하나의 연결 유지 지속적인 연결 유지
    프로토콜 HTTP/1.1 또는 HTTP/2 HTTP/1.1 WebSocket 프로토콜 (ws://, wss://)
    사용 주기적으로 상태를 확인해야 하는 간단한 요청 간단한 실시간 UI 업데이트
    실시간 알림
    복잡한 실시간 데이터 교환
    양방향 통신이 필요

     

    WebSocket

    • 클라이언트와 서버를 연결하고 실시간으로 통신이 가능하도록 하는 통신 프로토콜
    • 기존 HTTP와 다르게 지속적인 연결을 유지하며 데이터를 실시간으로 수송신할 수 있음
    • 생성 → 연결 → 송수신 → 닫기 Flow로 실행됨
    • Swift로 first-party인 URLSessionWebSocketTask 및 third-party StarScream이 있음
    • 주의 사항:
      • 네트워크 상태 관리 - 연결이 끊어질 수 있으므로 재연결 로직이 필요함
      • 보안 - wss:// 프로토콜을 사용하여 SSL/TLS로 데이터 암호화
      • 백그라운드 작업 - 앱이 백그라운드로 전환 될때 WebSocket 관리 필요
    •  
     
    상황 Action
    앱 Foreground 상태로 진입 WebSocket 연결 유지 또는 재연결
    앱 Background 상태로 진입 중요하지 않는경우 연결 종료
    앱 종료 WebSocket 연결 종료 및 서버에 상태 업데이트*
    네트워크 연결 끊김 자동 재연결 로직 실행
    네트워크 다시 연결됨 WebSocket 재연결 시도

     

    'Swift' 카테고리의 다른 글

    [Swift] WebSocket + STOMP 연동  (0) 2025.02.04
    [Package] DGCharts - 차트 커스터마이징  (0) 2025.02.04
    [Swift] Combine & Async/Await 알아보기  (0) 2024.08.19
    [Swift] UIKit - View  (0) 2024.08.06
    [Swift] Swift 개발시 유용한 링크  (0) 2024.08.05