Клиент Apollo и аутентификация Hasura на iOS - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь реализовать подписку с помощью клиента apollo на iOS, и я изучил эту ветку , но она не работает для меня.Я все еще получаю Authentication hook unauthorized this request, code: 1000 или Operation couldn't be completed Starscream.WSError error 1

Мой код:

let apollo: ApolloClient = {
    let authPayload = ["X-Hasura-Access-Key": "<my_key>",
                       "Content-Type": "application/json"]

    let configuration = URLSessionConfiguration.default
    configuration.httpAdditionalHeaders = authPayload

    let map: GraphQLMap = authPayload

    let url = URL(string: "https://url")!
    let wsUrl = URL(string: "wss://url")!

    let httpNetworkTransport = HTTPNetworkTransport(url: url, configuration: configuration)
    let wsNetworkTransport = WebSocketTransport(request: URLRequest(url: wsUrl), connectingPayload: map)

    return ApolloClient(networkTransport: SplitNetworkTransport(httpNetworkTransport: httpNetworkTransport,
                                                            webSocketNetworkTransport: wsNetworkTransport))
}()

Хотя он отлично работает с запросами, но не с веб-сокетом и подписками.Что я делаю не так?

UPD: это интересно, но если я удалю полезную нагрузку в wsNetworkTransport, ошибка останется прежней.Также, если я добавляю заголовки запроса вручную через request.addValue, ошибка снова та же.

Я звоню клиенту так:

apollo.subscribe(subscription: OrdersSubscription(id: "123")) { (result, error) in
        error == nil ? print(result!) : print(error!)
}

Есть ли какие-либо дополнительные настройки I 'м отсутствует?Этой вещи действительно не хватает документов.

1 Ответ

0 голосов
/ 25 сентября 2018

Этот фрагмент кода должен работать:

let authPayloads = [
  "X-Hasura-Access-Key": "<key>"
]
let map: GraphQLMap = ["headers": authPayloads]
let websocket = WebSocketTransport(request: urlRequest, connectingPayload: map)

Карта полезных нагрузок должна быть структурирована немного по-другому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...