[] SignalR 연결 - 채팅 관련 기능 추가 및 설정 중

This commit is contained in:
김선규 2025-04-09 17:54:50 +09:00
parent 46be2a0299
commit b226ad8050
3 changed files with 47 additions and 25 deletions

View File

@ -105,6 +105,7 @@ public class APIManager {
self.accToken = (response as! Access).access self.accToken = (response as! Access).access
var updateRequest = request var updateRequest = request
updateRequest.parameters["token"] = self.accToken updateRequest.parameters["token"] = self.accToken
printLog("Acc: \(self.accToken)")
return APIManager().loadAPIData(updateRequest) return APIManager().loadAPIData(updateRequest)
.eraseToAnyPublisher() .eraseToAnyPublisher()
} }

View File

@ -21,7 +21,6 @@ class WebSocketManager: ObservableObject ,WebSocketDelegate {
var request = URLRequest(url: url) var request = URLRequest(url: url)
request.timeoutInterval = 5 request.timeoutInterval = 5
request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("Upgrade", forHTTPHeaderField: "Connection") request.setValue("Upgrade", forHTTPHeaderField: "Connection")
socket = WebSocket(request: request) socket = WebSocket(request: request)
@ -29,21 +28,52 @@ class WebSocketManager: ObservableObject ,WebSocketDelegate {
} }
func connect() { func connect() {
socket?.connect()
printLog("TRY CONNECT SOCKET") printLog("TRY CONNECT SOCKET")
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { socket?.connect()
let handShakeMsg = """ }
{"protocol":"json","version":1}\u{1E}
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) 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() { func disconnect() {
socket?.disconnect() socket?.disconnect()
socket?.delegate = nil // : delegate socket?.delegate = nil // : delegate
socket = nil // , socket = nil // ,
printLog("CLOSE SOCKET") printLog("CLOSE SOCKET")
} }
func sendMessage(_ message: String) { func sendMessage(_ message: String) {
@ -58,24 +88,15 @@ class WebSocketManager: ObservableObject ,WebSocketDelegate {
printLog("SEND THE MESSAGE: \(message)") printLog("SEND THE MESSAGE: \(message)")
} }
func didReceive(event: Starscream.WebSocketEvent, client: any Starscream.WebSocketClient) { func joinRoom(_ cid: String){
switch event { let json = """
{
case .connected(let header): "type": 1,
printLog("CONNECTED : \(header)") "target":"JoinRoom",
case .disconnected(let reason, let code): "arguments":["\(cid)"]
printLog("DISCONNECTED: [\(code)] - \(reason)") }\u{1E}
case .text(let text): """
receivedMessage.append(text) socket?.write(string: json)
printLog("SERVER SAID: \(text)") printLog("JOIN: \(cid)")
case .binary(let binary):
printLog("BINARY?: \(binary)")
case .error(let error):
printLog("ERROR!: \(error)")
case .cancelled:
printLog("SOCKET CONNECTED CANCELLED!!!")
default:
break
}
} }
} }