Отправка данных JSON через URLSessionWebSocketTask в iOS

Я реализую приложение для iOS, которое обрабатывает WebSockets для передачи данных на сервер. Вот код ниже:

class SocketManager: NSObject {
private let urlSession: URLSession
    private let webSocketTask: URLSessionWebSocketTask

 private override init() {
        urlSession = URLSession(configuration: .default, delegate: SocketManagerDelegate(), delegateQueue: OperationQueue())
        webSocketTask = urlSession.webSocketTask(with: URL(string: "ws://xxxx-xxx.com/ws")!)
        webSocketTask.resume()
        super.init()
        ping()
    }

func ping() {
        webSocketTask.sendPing { error in
            if let error = error {
                print("Error when sending PING \(error)")
            } else {
                print("Web Socket connection is alive")
            }
            DispatchQueue.global().asyncAfter(deadline: .now() + 5) {
                self.ping()
            }
        }
    }

private func send(_ data: Data) {
//        webSocketTask.send(.string("{'s':'2', 'd':{'unknown': 1, 'walking': 0, 'stationary': 0, 'running': 0, 'confidence': 'High', 'cycling': 0, 'timestamp': '2020-05-28 22:20:07.977', 'automotive': 0, 'ridetoken': '3f5ee243547dee91fbd053c1c4a845aa'}}")) { error in
//          if let error = error {
//            print("Error when sending a message \(error)")
//          }
//        }
        webSocketTask.send(URLSessionWebSocketTask.Message.data(data)) { error in
            if let error = error {
                print("WebSocket couldn’t send message because: \(error)")
            }
        }
    }
}

Когда я отправляю данные JSON, сервер выдает ошибку.

Error when receiving Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://xxxx-xxx.com/ws, NSErrorFailingURLKey=http://xxxx-xxx.com/ws}

Но когда я отправляю жестко закодированную строку (закомментированный код выше), она работает хорошо. Но когда я отправляю данные JSON, это ошибка выброса. Я не могу понять, что может быть возможной ошибкой с данными JSON.

0 ответов

Другие вопросы по тегам