만약 웹소켓을 사용하는 도중에 예상치 못한 에러가 발생한다면, 실시간 데이터 통신이 끊기게 됩니다.
예를 들어 다음과 같은 경우들이 존재합니다.
<aside> 💡
이외에도 다양한 에러가 발생할 수 있습니다. 사용자가 직접 웹소켓 통신을 종료하는 경우를 제외한다면 다시 웹소켓을 재연결 해 줄 필요가 있습니다.
웹소켓 통신을 어떻게 연결할 수 있을까요?
private let session: URLSession
private var task: URLSessionWebSocketTask?
self.task = session.webSocketTask(with: url)
task?.delegate = self
task?.resume()
1️⃣ 먼저 URLSessionWebSocketTask을 생성합니다.
아직 네트워크 요청을 보내지 않은 상태이며, 핸드셰이크에 준비한 상태입니다.
self.task = session.webSocketTask(with: url)
2️⃣ 웹소켓 통신에서의 이벤트를 수신할 대상을 지정합니다.
task?.delegate = self
3️⃣ 웹소켓 핸드셰이크를 시작합니다.
해당 순간부터 네트워크 연결이 실제로 이뤄집니다.
task?.resume()
위 3단계 과정을 통해서 웹소켓 핸드셰이크를 완료하여 웹소켓 통신을 시작할 수 있습니다.