I am trying to implement graphql subscription using apollo ios client. But not able to figure it out as lack of documentation examples. Example given on apollo documentation
Implement the subscription in apollo ios graphql client by following below steps.
Using cocoapods:
pod 'Apollo'
pod 'Apollo/WebSocket'
pod install
To create client to support subscription and authentication. Add below code in AppDelegate.swift
:
WebSocketTransport
and URLRequest
connectingPayload
to server. And for http we are passing it in headers as mentioned in question snippet.SplitNetworkTransport
- To combine both http
and websocket
to create client. we have to use httpNetworkTransport
and 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)
}()