소켓은 언제 연결하고 끊어야 할까? 2편 (feat. ViewController의 생명주기)

·2024년 7월 23일

프로젝트-42CM

목록 보기
9/9
post-thumbnail

안녕하세요! 이번에는 ViewController의 생명주기의 각 시점에서 소켓 연결을 어떻게 관리하는 게 좋을지 알아보고자 합니다. 그전에, ViewController의 생명주기를 먼저 살펴보겠습니다.

ViewController의 생명주기

viewDidLoad
뷰 컨트롤러의 뷰가 메모리에 로드될 때 호출됩니다. 이 시점에는 뷰가 화면에 표시되기 전에 초기 설정 작업을 수행할 수 있습니다.

viewWillAppear
뷰가 화면에 나타나기 직전에 호출됩니다. 이 시점에는 뷰가 화면에 표시되기 전 최종 준비 작업을 수행할 수 있습니다.

viewDidAppear
뷰가 화면에 완전히 표시된 후 호출됩니다. 이 시점에는 사용자와의 상호작용이 가능한 상태가 됩니다.

viewWillDisappear
뷰가 화면에서 사라지기 직전에 호출됩니다. 이 시점에는 화면을 떠날 때 필요한 작업을 수행할 수 있습니다.

viewDidDisappear
뷰가 화면에서 완전히 사라진 후 호출됩니다. 이 시점에는 더 이상 뷰가 화면에 표시되지 않으므로 관련 리소스를 해제할 수 있습니다.


채팅 ViewController에서 소켓 연결 관리

채팅 화면에서는 사용자 간의 실시간 메시지 전송이 중요합니다. 따라서 소켓 연결 관리가 필요하며, 각 생명주기 메서드에서 소켓 연결을 어떻게 처리할지 결정해야 합니다!

viewDidLoad에서 소켓 설정:
viewDidLoad는 뷰가 메모리에 로드될 때 호출되므로, 이 시점에 소켓 클라이언트의 초기 설정을 할 수 있습니다. 하지만 실제 연결을 시작하기에는 이르며, 소켓 연결에 필요한 설정과 이벤트 핸들러를 등록하는 작업을 이 시점에 수행할 수 있습니다.

viewWillAppear 또는 viewDidAppear에서 소켓 연결:
사용자가 채팅방 화면에 진입할 때, 실시간 메시지 수신을 위해 소켓을 연결해야 합니다. 이 작업은 일반적으로 viewWillAppear 또는 viewDidAppear 메서드에서 수행됩니다. viewWillAppear는 뷰가 화면에 나타나기 직전에 호출되기 때문에 사용자가 화면을 보기 시작하기 전에 소켓을 연결하고 초기 메시지를 받을 수 있습니다. viewDidAppear에서는 뷰가 완전히 화면에 표시된 후 연결을 시작할 수 있습니다.

viewWillDisappear 또는 viewDidDisappear에서 소켓 연결 해제:
사용자가 채팅방 화면을 떠날 때는 더 이상 실시간 메시지를 받을 필요가 없습니다. 따라서, 소켓 연결을 해제하여 불필요한 네트워크 사용을 방지해야 합니다. 이 작업은 viewWillDisappear나 viewDidDisappear 메서드에서 수행할 수 있습니다. viewWillDisappear에서는 뷰가 사라지기 전에 연결을 해제하여 필요한 정리를 할 수 있고, viewDidDisappear에서는 화면에서 완전히 사라진 후에 해제할 수 있습니다.

0개의 댓글