diff --git a/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate b/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate index 1587f3a..d027059 100644 Binary files a/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate and b/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/AcaMate/5. Manager/APIManager.swift b/AcaMate/5. Manager/APIManager.swift index f3a9265..3572bda 100644 --- a/AcaMate/5. Manager/APIManager.swift +++ b/AcaMate/5. Manager/APIManager.swift @@ -105,6 +105,7 @@ public class APIManager { self.accToken = (response as! Access).access var updateRequest = request updateRequest.parameters["token"] = self.accToken + printLog("Acc: \(self.accToken)") return APIManager().loadAPIData(updateRequest) .eraseToAnyPublisher() } diff --git a/AcaMate/5. Manager/WebSocketManager.swift b/AcaMate/5. Manager/WebSocketManager.swift index 29dce4f..5a87c58 100644 --- a/AcaMate/5. Manager/WebSocketManager.swift +++ b/AcaMate/5. Manager/WebSocketManager.swift @@ -21,7 +21,6 @@ class WebSocketManager: ObservableObject ,WebSocketDelegate { var request = URLRequest(url: url) request.timeoutInterval = 5 request.setValue("application/json", forHTTPHeaderField: "Content-Type") - request.setValue("Upgrade", forHTTPHeaderField: "Connection") socket = WebSocket(request: request) @@ -29,21 +28,52 @@ class WebSocketManager: ObservableObject ,WebSocketDelegate { } func connect() { - socket?.connect() printLog("TRY CONNECT SOCKET") - DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { - let handShakeMsg = """ - {"protocol":"json","version":1}\u{1E} + socket?.connect() + } + + func didReceive(event: Starscream.WebSocketEvent, client: WebSocketClient) { + switch event { + case .connected(let header): + printLog("CONNECTED : \(header)") + // 우리는 현재 JSON기반으로 메시지를 주고 받을거고 SignalR JSON 프로토콜의 버전은 1이다 + let handShakeMsg = + """ + { + "protocol":"json", + "version":1 + }\u{1E} """ self.socket?.write(string: handShakeMsg) + + case .disconnected(let reason, let code): + printLog("❌ DISCONNECTED: [\(code)] - \(reason)") + + case .error(let error): + printLog("🆘 SOCKET ERROR: \(error?.localizedDescription ?? "unknown")") + + case .text(let text): + printLog("📩 SERVER SENT: \(text)") + receivedMessage.append(text) + + + case .binary(let binary): + printLog("BINARY?: \(binary)") + + case .cancelled: + printLog("SOCKET CONNECTED CANCELLED!!!") + + default: + break } } + + func disconnect() { socket?.disconnect() socket?.delegate = nil // 추가: delegate 해제 socket = nil // 필요시, 소켓 객체 해제 printLog("CLOSE SOCKET") - } func sendMessage(_ message: String) { @@ -58,24 +88,15 @@ class WebSocketManager: ObservableObject ,WebSocketDelegate { printLog("SEND THE MESSAGE: \(message)") } - func didReceive(event: Starscream.WebSocketEvent, client: any Starscream.WebSocketClient) { - switch event { - - case .connected(let header): - printLog("CONNECTED : \(header)") - case .disconnected(let reason, let code): - printLog("DISCONNECTED: [\(code)] - \(reason)") - case .text(let text): - receivedMessage.append(text) - printLog("SERVER SAID: \(text)") - case .binary(let binary): - printLog("BINARY?: \(binary)") - case .error(let error): - printLog("ERROR!: \(error)") - case .cancelled: - printLog("SOCKET CONNECTED CANCELLED!!!") - default: - break - } + func joinRoom(_ cid: String){ + let json = """ + { + "type": 1, + "target":"JoinRoom", + "arguments":["\(cid)"] + }\u{1E} + """ + socket?.write(string: json) + printLog("JOIN: \(cid)") } }