https://github.com/graph-gophers/graphql-transport-ws
WebSocket transport for GraphQL subscriptions
https://github.com/graph-gophers/graphql-transport-ws
Last synced: about 1 year 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 (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-04-13T11:33:30.000Z (over 4 years ago)
- Last Synced: 2024-08-01T13:29:27.990Z (almost 2 years 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
[](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 [Apollo@v0.9.4 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 main
import (
"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.