Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/graph-gophers/graphql-transport-ws
WebSocket transport for GraphQL subscriptions
https://github.com/graph-gophers/graphql-transport-ws
Last synced: 2 months ago
JSON representation
WebSocket transport for GraphQL subscriptions
- Host: GitHub
- URL: https://github.com/graph-gophers/graphql-transport-ws
- Owner: graph-gophers
- License: bsd-2-clause
- Created: 2018-10-10T01:22:40.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-04-13T11:33:30.000Z (almost 3 years ago)
- Last Synced: 2024-08-01T13:29:27.990Z (6 months ago)
- Language: Go
- Size: 46.9 KB
- Stars: 58
- Watchers: 4
- Forks: 32
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ccamel - graph-gophers/graphql-transport-ws - WebSocket transport for GraphQL subscriptions (Go)
README
# graphql-transport-ws
[![Build Status](https://travis-ci.org/graph-gophers/graphql-transport-ws.svg?branch=master)](https://travis-ci.org/graph-gophers/graphql-transport-ws)**(Work in progress!)**
A Go package that leverages WebSockets to transport GraphQL subscriptions, queries and mutations implementing the [[email protected] protocol](https://github.com/apollographql/subscriptions-transport-ws/blob/v0.9.4/PROTOCOL.md)
### Use with graph-gophers/graphql-go
To use this library with [github.com/graph-gophers/graphql-go](https://github.com/graph-gophers/graphql-go) you can wrap the `relay` handler it provides the following way:
```go
package mainimport (
"fmt"
"net/http"graphql "github.com/graph-gophers/graphql-go"
"github.com/graph-gophers/graphql-go/relay"
"github.com/graph-gophers/graphql-transport-ws/graphqlws"
)const schema = `
schema {
subscription: Subscription
}type Subscription {
...
}
`type resolver struct {
// ...
}func main() {
// init graphQL schema
s, err := graphql.ParseSchema(schema, &resolver{})
if err != nil {
panic(err)
}// graphQL handler
graphQLHandler := graphqlws.NewHandlerFunc(s, &relay.Handler{Schema: s})
http.HandleFunc("/graphql", graphQLHandler)// start HTTP server
if err := http.ListenAndServe(fmt.Sprintf(":%d", 8080), nil); err != nil {
panic(err)
}
}
```For a more in depth example see [this repo](https://github.com/matiasanaya/go-graphql-subscription-example).
### Client
Check [apollographql/subscription-transport-ws](https://github.com/apollographql/subscriptions-transport-ws) for details on how to use WebSockets on the client side.