订阅失败错误 WSError(类型:Starscream.ErrorType.upgradeError 消息:\"Invalid HTTP upgrade\",代码:400)?
Subscription Failure Error WSError(type: Starscream.ErrorType.upgradeError message: \"Invalid HTTP upgrade\", code: 400)?
我需要在我的 iOS 应用程序中集成 subscription
。 subscription
在 graphiql
中的 localhost
上运行良好。我已经在 Heroku
上部署了我的后端。我使用的是 apollo-server
而不是 hasura
。我的 subscriptions
不适用于 Heroku 给出的 url,但它在 localhost
上运行良好。 Queries
和 mutations
适用于 localhost
和 Heroku
url。所以我正在尝试从我的 iOS 客户端访问我的 subscription
。我将基地 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)
我也尝试用 ws
替换 http
如下
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 进行订阅时,我收到以下错误。
所以我的 ios Code
没有问题。问题出在我使用的 Heroku
免费层。我尝试用 Hasura's Subscription
https://hasura.io/learn/graphql/ios/subscriptions/1-subscription/
替换我的 subscription
并且它有效。
我需要在我的 iOS 应用程序中集成 subscription
。 subscription
在 graphiql
中的 localhost
上运行良好。我已经在 Heroku
上部署了我的后端。我使用的是 apollo-server
而不是 hasura
。我的 subscriptions
不适用于 Heroku 给出的 url,但它在 localhost
上运行良好。 Queries
和 mutations
适用于 localhost
和 Heroku
url。所以我正在尝试从我的 iOS 客户端访问我的 subscription
。我将基地 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)
我也尝试用 ws
替换 http
如下
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 进行订阅时,我收到以下错误。
所以我的 ios Code
没有问题。问题出在我使用的 Heroku
免费层。我尝试用 Hasura's Subscription
https://hasura.io/learn/graphql/ios/subscriptions/1-subscription/
替换我的 subscription
并且它有效。