일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- network
- realtime
- OpenAI
- WebSocket
- dartz
- EventLoop
- WWDC24
- dgcharts
- tuist
- AppleDeveloper
- uikit
- philipshue
- 문법
- flutter
- GIT
- concurrency
- SampleApp
- swift
- isolate
- weatherkit
- chartsorg
- SwiftUI
- iot
- dart
- builder
- LifeCycle
- designpattern
- Xcode
- state
- Architecture
Archives
- Today
- Total
Jaebi의 Binary는 호남선
[Swift] 실시간 데이터 표현 본문
목차
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 |