Ошибка ошибки подписки WSError(тип: Starscream.ErrorType.upgradeError, сообщение: \"Недопустимое обновление HTTP \", код: 400)?

Мне нужно интегрировать subscriptionв моем приложении для iOS. Вsubscription отлично работает на localhost в graphiql. Я развернул серверную часть наHeroku. Я используюapollo-server и нет hasura. Мойsubscriptions не работают для URL-адреса, указанного Heroku, но он отлично работает на localhost. Queries а также mutations отлично работают для обоих localhost а также HerokuURL. Итак, я пытаюсь получить доступ к своемуsubscriptionиз моего клиента iOS. Я сохранил базовый URL в качестве локального хоста. Часть запросов и мутаций работает для моего клиента iOS, но мойsubscription часть не работает.

Я настроил свой клиент Apollo для подписки, добавив этот

let httpNetworkTransport = HTTPNetworkTransport(url: URL(string: "http://localhost:5000")!)
        httpNetworkTransport.delegate = self

        let webSocketTransport = WebSocketTransport(request: URLRequest(url: URL(string: "http://localhost:5000")!))


         let splitNetworkTransport = SplitNetworkTransport(
          httpNetworkTransport: httpNetworkTransport,
          webSocketNetworkTransport: webSocketTransport
        )

        return ApolloClient(networkTransport: splitNetworkTransport)

Я тоже пробовал заменить http с ws следующее

let webSocketTransport = WebSocketTransport(request: URLRequest(url: URL(string: "ws://localhost:5000")!))

Код подписки следующий

subscription = Network.shared.apollo.subscribe(subscription: GetHealthConsultationSubscriptionSubscription()){
            [weak self] result in
            guard let self = self else {
                return
            }
            switch result {
            case .success(let result):
                debugPrint(result.data?.healthConsultation.chiefComplaint)

            case .failure(let error):
                debugPrint(" Subscription Failure Error \(error)")
            }
        }

Но я получаю сообщение об ошибке от моего клиента iOS следующим образом

" Subscription Failure Error WSError(type: Starscream.ErrorType.upgradeError, message: \"Invalid HTTP upgrade\", code: 400)"

Также когда я использую Graphiql для моей подписки и заменить localhost с Heroku URL моей подписки, я получаю следующую ошибку.

1 ответ

Решение

Так что с моим ios Code. Проблема заключалась в бесплатном уровнеHerokuЯ использую. Я попытался заменить свойsubscription с Hasura's Subscription https://hasura.io/learn/graphql/ios/subscriptions/1-subscription/ и это работает.

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