Notice
Recent Posts
Recent Comments
Link
투케이2K
550. (ios/swift5) [URLSession] [3] Websocket 웹 소켓 send 실시간 메시지 송신 전송 처리 본문
IOS
550. (ios/swift5) [URLSession] [3] Websocket 웹 소켓 send 실시간 메시지 송신 전송 처리
투케이2K 2024. 9. 13. 15:59[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[소스 코드]
// -----------------------------------------------------------------------------------------
// [웹 소켓 통신 연결 및 ping 체크 참고 사이트]
// -----------------------------------------------------------------------------------------
https://blog.naver.com/kkh0977/223583023595
// -----------------------------------------------------------------------------------------
// [사용 방법 예시]
// -----------------------------------------------------------------------------------------
DispatchQueue.main.asyncAfter(deadline: .now() + 5) { // [5초 시간 설정]
C_WebSocket_Urlsession_Client_Module().onSend(tag: "HELLO_1 전송", data: "hello_1"){(result, response) in
S_Log._F_(description: "웹 소켓 실시간 메시지 송신 결과_1", data: [response])
}
}
// -----------------------------------------------------------------------------------------
// MARK: - [SEARCH FAST] : WebSocket onSend
// -----------------------------------------------------------------------------------------
func onSend(tag: String, data: String, callback: @escaping (Bool, String)->()) {
S_Log._F_(description: self.ACTIVITY_NAME + " :: [onSend] :: WebSocket onSend [메시지 전송] 수행", data: [
"TAG :: \(tag)",
"MESSAGE :: \(data)"
])
// -----------------------------------------
// [사전 방어 로직 작성]
// -----------------------------------------
if C_WebSocket_Urlsession_Client_Module.webSocketOpenFlag == false || C_WebSocket_Urlsession_Client_Module.webSocketTask == nil {
// [콜백 반환]
callback(false, self.ACTIVITY_NAME + " :: [onSend] :: [ERROR] :: oepn false || socketTask is nil")
return
}
// -----------------------------------------
if C_WebSocket_Urlsession_Client_Module.webSocketTask!.state == .running {
print(self.ACTIVITY_NAME + " :: [onSend] :: WebSocket onSend [메시지 전송] :: WebSocket is connected == true")
// -----------------------------------------
// [웹소켓 메시지 전송 수행]
// -----------------------------------------
let message = URLSessionWebSocketTask.Message.string(data)
C_WebSocket_Urlsession_Client_Module.webSocketTask!.send(message) { error in
if let error = error {
// [콜백 반환]
callback(false, self.ACTIVITY_NAME + " :: [onSend] :: [ERROR] :: Failed to send message :: \(error)")
return
} else {
// [콜백 반환]
callback(true, self.ACTIVITY_NAME + " :: [onSend] :: [SUCCESS] :: Send Message")
return
}
}
} else {
print(self.ACTIVITY_NAME + " :: [onSend] :: WebSocket onSend [메시지 전송] :: WebSocket is connected == false")
// [콜백 반환]
callback(false, self.ACTIVITY_NAME + " :: [onSend] :: [ERROR] :: WebSocket is connected == false")
return
}
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments