作者:淼淼妈妈的指国度an | 来源:互联网 | 2022-12-08 14:40
我正在尝试使用apollo ios客户端实现graphql订阅。但是由于缺乏文档示例,因此无法弄清楚。阿波罗文档上给出的示例是:
let apollo: ApolloClient = {
let cOnfiguration= URLSessionConfiguration.default
// Add additional headers as needed
configuration.httpAdditiOnalHeaders= ["Authorization": "Bearer "] // Replace ``
let url = URL(string: "http://localhost:8080/graphql")!
return ApolloClient(networkTransport: HTTPNetworkTransport(url: url, configuration: configuration))
}()
APOLLO IOS指南:创建客户端
1> rajesh ujade..:
请按照以下步骤在apollo ios graphql客户端中实现订阅。
使用cocoapods:
pod 'Apollo'
pod 'Apollo/WebSocket'
pod install
创建客户端以支持订阅和身份验证。在下面添加以下代码AppDelegate.swift
:
WebSocket的-我们必须使用WebSocketTransport
和URLRequest
身份验证-我们必须将连接参数中的auth参数传递connectingPayload
给服务器。对于http,我们正在问题片段中提到的标头中传递它。
SplitNetworkTransport
-结合两者http
并websocket
创建客户。我们必须使用httpNetworkTransport
和webSocketNetworkTransport
lazy var apollo: ApolloClient = {
let authPayloads = [
"Authorization": "Bearer "
]
let cOnfiguration= URLSessionConfiguration.default
configuration.httpAdditiOnalHeaders= authPayloads
let map: GraphQLMap = authPayloads
let wsEndpointURL = URL(string: "ws://localhost:8080/subscriptions")!
let endpointURL = URL(string: "http://localhost:8080/api")!
let websocket = WebSocketTransport(request: URLRequest(url: wsEndpointURL), connectingPayload: map)
let splitNetworkTransport = SplitNetworkTransport(
httpNetworkTransport: HTTPNetworkTransport(
url: endpointURL,
configuration: configuration
),
webSocketNetworkTransport: websocket
)
return ApolloClient(networkTransport: splitNetworkTransport)
}()