TIL - 2024.05.09 목요일

· 성취/개선/학습한 내용 🏆

 오늘은 Combine과 WebSocket에 대해 학습을 하였다. Combine과 RxSwift 둘 중 하나만 익혀도 다른 하나는 익히기 쉽다는 것이 무슨 말인지 이해를 할 수 있었다. 그 이유는 사용하는 방법이 거의 동일하기 때문이다. 다만 약간의 용어의 차이는 있다. 예를 들자면 RwSwift에서 DisposeBag이 AnyCancellable로 Combine에선 구현되어 있고, 마찬가지로 subscribe는 sink로 구현되어 있다. 몇 가지를 더 나열해 보자면 dispsoe는 store로 publishSubject는 PassthroughSubject로 구현되어 있었다. 

 그리고 WebSocket에 대해서도 학습을 하였는데, 알고 보니 모든 서버 통신 (WebSocket, Streaming 등) URLSession으로 하는 것이었다. 웹소켓 통신은 여기서 URLSessionWebSocketTask로 구현하면 되는데, 웹소켓의 중요한 특성을 알아둘 필요가 있다. 웹소켓은 재귀함수를 통해 계속해서 데이터를 받는 특징이 있기 때문에, ViewDidDisappear가 될 때 웹소켓과 통신을 종료해 주거나 앱이 백그라운드 상태로 바뀌었을 때 종료를 해주는 등 여러 사항을 고려해야 한다. 그리고 어떤 곳은 Ping이라 하여 일정 시간 동안 수/발신이 없다면 웹소켓 연결을 종료시키기도 한다. 이런 부분 역시 고려를 해야 한다.

  • Combine
    • AnyCancellable 
    • sink
    • store
    • receiveOn
    • Publisher
    • Subscriber
    • Operator
    • PassthroughSubject
    • CurrentValueSubject
  • WebSocket
    • URLSessionWebSocketTask
    • webSocketTask
    • send
    • cancel

 

 

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

TIL - 2024.05.13 월요일  (0) 2024.05.13
TIL - 2024.05.10 금요일  (0) 2024.05.10
TIL - 2024.05.08 수요일  (0) 2024.05.08
TIL - 2024.05.03 금요일  (0) 2024.05.03
TIL - 2024.04.30 화요일  (0) 2024.04.30