|  |  | 
|---|
웹소켓(WebSocket)이란
StartScream 라이브러리 이용
IOS 에서 제공하는 URLSessionWebSocketTask을 이용하여 웹소켓을 사용할 수 있지만, Starscream 사용하여 좀 더 손쉽게 웹소켓 통신을 구현할 수 있음.
import Starscream 	private var socket: WebSocket?
    private let socketUrl = 소켓URL
    
    func connect() {
        let request = URLRequest(url: socketUrl)
        self.socket = WebSocket(request: request)
        self.socket?.delegate = self
        self.socket?.connect()
    }
    
    func disconnect() {
        self.socket?.disconnect()
    }extension 소켓클래스: WebSocketDelegate {
    func didReceive(event: Starscream.WebSocketEvent, client: Starscream.WebSocket) {
        switch event {
            
        case .connected(_):
            <#code#>
        case .disconnected(_, _):
            <#code#>
        case .text(_):
            <#code#>
        case .binary(_):
            <#code#>
        case .pong(_):
            <#code#>
        case .ping(_):
            <#code#>
        case .error(_):
            <#code#>
        case .viabilityChanged(_):
            <#code#>
        case .reconnectSuggested(_):
            <#code#>
        case .cancelled:
            <#code#>
        }
    }
}event에 따라 분기처리를 할 수 있음.
소켓에 들어오는 데이터는 .text에 들어오는데 들어오는 데이터에 맞춰 구현 해주면 됨.
예를 들어
case .text(let string):
            do {
                let decoder = JSONDecoder()
                let result = try decoder.decode(ReceiveMessage.self, from: Data(string.utf8))
                
                if result.event == "message.new" {
                    guard let data = result.messageData else { return }
                    message.append(data)
                    scrollToEnd = true
                }
                
            }
            catch {
                print(error.localizedDescription)
            }이런 식으로 원하는 코드를 구현 하면 됨.