WebSocket 통신 in Swift

hankyulee·2023년 1월 6일
0

— 서버연결 ----
1. Signal client 만들때 socket 만든다. (Url이 사용이됨)
2. MainViewController 만들때 client 들어간다.
3. MainViewController Viewdidload에서 self.signalClient.connect()를 통해 서버와 연결.
extension NativeWebSocket: URLSessionWebSocketDelegate, URLSessionDelegate {// URLSessionDelegate은 없어도 컴파일 가능
func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didOpenWithProtocol protocol: String?)

— 위에는 서버에 연결 된 것 —

— 메시지 줄때(offer) ——
peerConnetion에 Offer한다(peerConnection.setLocalDescription)
1. sdp 먼저보낸다.
2. socket에 send
3. gathering
4. Ice send

  • 함수따라가 보면 sdp 구성한 다음에 signalClient에서 websocekt에 sdp 보냄
    sdp를 websocket에 보내면 peerConnection new gathering state: gathering 호출됨 -> 그다음에 -> debugPrint("📚peerConnection didgenerate 🕗 IceCandidate 개수만큼 호출") 호출됨 즉 gathering
    그러면서 ice 보냄 (websocket에)
    —- 끝 —-

— 메시지 offer 받을때 —— (내가 먼저 오퍼하고 그다음에 offer 받은 상황)
Sdp 하나만 온다. socket의 readmessage부분에.
들어온 sdp를 webrtcClient부분에서 set한다.
—- 끝 —-

— 상대방이 send answer 했을때 —
Candidate 주다가
"📚peerConnection did open data channel 🟦"
—- 끝 —-

  • 연결되었는데, offer 또는 answer보내면 sdp만 보낸다.

메시지 받았을때(상대가 offer했을때) - 상대가 처음 offer하면 sdp 먼저온다. (아래는 서버에서 본 상대의 sdp)


하나 SessionDescription 보낸 후 아래와 같이 IcdeCandidate보낸다.


SignalingClient(webSocket: webSocketProvider) - WebSocket과 관련이 있다.

0개의 댓글