forked from AcaMate/AcaMate_iOS
[✨] SignalR 연결 - 채팅 관련 기능 추가 및 설정 중
This commit is contained in:
parent
46be2a0299
commit
b226ad8050
Binary file not shown.
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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)")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user