GQL WebSocket link to execute subscriptions as well as mutations & queries against a GraphQL backend.
This link support autoReconnect
and will resubscribe after reconnecting.
This package supports both the deprecated graphql-ws
and the graphql-transport-ws
protocol
via the WebSocketLink
and TransportWebSocketLink
classes respectively.
import "package:gql_link/gql_link.dart";
import "package:gql_websocket_link/gql_websocket_link.dart";
void main () {
final link = Link.from([
// SomeLink(),
WebSocketLink("ws://<GRAPHQL_SERVER_ENDPOINT>/graphql"),
]);
}
import "package:gql_link/gql_link.dart";
import "package:gql_websocket_link/gql_websocket_link.dart";
void main () {
final link = Link.from([
// SomeLink(),
TransportWebSocketLink(
TransportWsClientOptions(
socketMaker: WebSocketMaker.url(() => "ws://<GRAPHQL_SERVER_ENDPOINT>/graphql")
),
),
]);
}
There are two websocket sub-protocols available for GraphQL supported by this package:
graphql-ws
(also known assubscriptions-transport-ws
, which is the name of the npm package which implements it, spec])graphql-transport-ws
(confusingly, also known asgraphql-ws
, which is the name of the npm package which implements it spec)
In this document, we will refer to the protocols not by their npm package names, but by the name of the sub-protocol.
See also the Apollo docs.
Generally, you should use graphql-transport-ws
if your server supports it.
In order to use graphql-transport-ws
, you need to use the TransportWebSocketLink
class.
For graphql-ws
, use the WebSocketLink
class.
The WebSocketLink
class has some known issues, see:
Please file feature requests and bugs at the GitHub.
This code was adapted with minor changed from the graphql-flutter
repo