Отправка данных 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.