iOS Swift WebSocket — Настройка данных сеанса для сервера Vapor

#ios #swift #websocket #nsurlsession #urlsessionwebsockettask

Вопрос:

Я пытаюсь настроить сервер с помощью Vapor. В качестве клиента у меня есть простое приложение для iOS, использующее NSURLSessionURLSessionWebSocketTask. Мой вопрос… как я могу установить сеанс.данные из приложения iOS?

iOS App — метод подключения

 func connect(completion: @escaping ()->() = { }) {
        guard webSocketTask == nil else { return }

        self.username = "Name"
        self.userID = UUID().uuidString

        let url = URL(string: "ws://localhost:8080/connect")!
        webSocketTask = URLSession.shared.webSocketTask(with: url)
        webSocketTask?.receive(completionHandler: onReceive)
        webSocketTask?.resume()
        
    }
 

Vapor:

 app.webSocket("connect") { request, ws in
        let controller = Controller()

        let userName = request.session.data["nickname"] ?? "Unknown user"
        let data = request.session.data["data"] ?? "Empty Data"

        controller.addUser(userName, with: room, withConnection: ws)
.....
....
...
..
.
 

Ответ №1:

Вы можете использовать NSURLSessionDataTask.

https://developer.apple.com/documentation/foundation/nsurlsessiondatatask

Комментарии:

1. Не могли бы вы привести пример кода, пожалуйста? Я знаю, что NSURLSessionDataTask можно использовать для получения данных, но не уверен, что я могу передавать данные с ним на сервер на основе Vapor? В любом случае пример кода будет оценен по достоинству!

2. К сожалению, я не могу прямо сейчас. Но я вернусь позже к этой странице. Прошу прощения за это. Я проходил мимо и просто дал вам небольшой совет. Почему сервер на базе vapor может отличаться от любого другого сервера? Это было 2 дня назад, это исправлено?

3. Речь идет не о Vapor, а об iOS, потому что iOS должна передавать некоторые параметры серверу при подключении. Это еще не исправлено, все еще ищу решение. Также пробовал файлы cookie, сокет. параметры ввода-вывода… пока не повезло. Если у вас есть свободное время, проверьте это..