ios(31)
-
[네트워크] 실시간 통신 개념 정리 4 - STOMP
WebSocket이 해결해 준 것웹소켓(WebSocket)은 HTML5에서 정의된 실시간 통신 프로토콜 기존 HTTP가 요청 → 응답 → 연결 종료 방식이었다면,웹소켓은 한 번 연결되면 연결을 끊지 않고 클라이언트 ↔ 서버가 동시에 메시지를 주고받음 즉, 실시간 양방향 통신을 가능하게 만듦 WebSocket이 해주는 역할연결 유지프레임 단위 데이터 송수신메시지 순서 보장 (TCP 기반)지연 없는 양방향 통신 WebSocket의 한계웹소켓은 통신 규칙(연결 유지, 양방향 통신, 프레임 단위 송수신)일뿐 메시지의 구조, 의미, 라우팅 방식과 같은 메시리 레벨 규칙은 정의하지 않음 예를 들어 클라이언트가 웹소켓으로 이런 데이터를 보낸다고 가정{ "opcode": 1, "body": "hi"}이 데이터는 ..
2026.01.03 -
[네트워크] 실시간 통신 개념 정리 3 - 웹소켓 동작방식
웹소켓HTTP의 한계를 보완하기 위해 등장한 TCP 기반의 실시간 양방향 통신 프로토콜TCP 기반 → 신로.순서 보장최초 연결은 HTTP로 시작하지만 성공 후 웹소켓 프로토콜로 업그레이드연결이 한 번 수립되면 명시적으로 종료되기 전까지 지속적으로 유지클라이언트 ↔ 서버 동시에 메시지 주고받음 웹소켓 연결 흐름[1] HTTP 요청으로 먼저 접속[2] 프로토콜 업그레이드(Upgrade)[3] 서버가 101 Switching Protocols 응답[4] 이후부터 WebSocket 전용 프레임으로 양방향 통신 유지 1️⃣ 연결 시작 - 웹소켓 생성let url = URL(string: "wss://example.com/chat")!let webSocketTask = URLSession.shared.webSoc..
2026.01.03 -
[네트워크] 실시간 통신 개념 정리 1 - Socket
소켓(Socket) 네트워크에서 데이터를 주고 받을 수 있는 통로 (왼쪽그림은 TCP/IP 4계층에 대한 그림이고,오른쪽은 TCP/IP 4계층은 동일한데 소켓의 위치에 대해 확인하기 위해 과장해서 그린 그림입니다. )소켓은 응용 계층과 전송 계층 사이에 위치앱은 TCP/UDP 프로토콜을 직접 구현할 필요 없음OS가 제공하는 소켓 API를 사용해 데이터를 보내면 OS가 TCP/IP 처리 1️⃣ 소켓의 역할역할설명TCP/UDP를 사용하기 위한 입구(통로)앱이 write()로 데이터를 넣으면 TCP/IP 처리는 OS가 수행End-Point 역할IP + Port + 연결정보(4-tuple)를 통해 통신 상대를 식별프로토콜이 아닌 인터페이스WebSocket, HTTP 같은 프로토콜은 응용 계층에서 정의됨. 소..
2026.01.03 -
[iOS] 숏폼 비디오 무한루프 구현 방법
이 글에서는 iOS에서 비디오 무한 루프를 구현하는 4가지 방법(오피셜은 아니고 제가 이런것들이 있겠다~ 생각한 것들입니다 ^0^)과 그중에서도 왜 AVPlayerLooper를 활용했는지에 대해 적어보려합니다. 1. iOS 비디오 무한 루프 구현 방법 4가지NotificationCenter + seekPeriodic Time ObserverAVQueuePlayer 수동 큐 관리AVPlayerLooper2. NotificationCenter + seek (가장 기본적인 방식)재생이 끝났다는 알림을 감지해, 다시 처음으로 되돌리는 가장 단순한 방식class BasicLoopingPlayer { private var player: AVPlayer? private var observer: NSObje..
2025.12.10 -
[iOS] KVC, KVO, Keypath 간단한 정리
KVC, KVO, Keypath객체 속성 접근 및 관찰 메커니즘Objective-C의 런타임 기능을 기반으로 하며, 객체의 프로퍼티에 간접적으로 접근하고 그 변화를 감지하는 데 사용Keypath는 Swift에서 이 기능을 타입-세이프하게 사용할 수 있도록 도입된 개념 KVC(Key Value Coding)인스턴스의 프로퍼티에 접근할때 key값인 문자열로 접근하는 방법Objective-C 런타임 기반 → @objc + NSObject 필요 예제class Person: NSObject { @objc var name: String?}let person = Person()// 1️⃣ value(forKey:)로 프로퍼티 값 읽기print(person.value(forKey: "name")) // nil/..
2025.11.07 -
[iOS] TCA 정리해보기1 - State, Action, Reducer, Store
1. State화면을 표현하는 데 필요한 모든 상태 정보를 담는 값 타입(Struct) View 는 이 State 를 기반으로 화면을 렌더링사용자의 입력을 Action 을 통해 Reducer 로 전달되어 State 를 갱신Equatable 프로토콜 준수struct CounterState: Equatable { var count: Int = 0 var isLoading: Bool = true} ✅ 왜 Equatable?Equatable 은 값의 동등성 비교를 가능하게 해주는 프로토콜SwfitUI는 상태가 바뀔 때마다 차이를 계산해 필요한 부분만 다시 그림TCA에서도 State가 Equatable일 때 불필요한 렌더링을 줄이고 성능 개선 가능주된 이유성능 최적화 — 상태 변경 여부를..
2025.10.20