Skip to content

Latest commit

 

History

History
73 lines (57 loc) · 2.51 KB

README.md

File metadata and controls

73 lines (57 loc) · 2.51 KB

Go Doc Reference Go Report Card Maintainability Test Coverage

An implementation of websocket transport for graphql-go.

Currently following flavors are supported:

Inspired by graphqlws

Key features:

  • Subscription support
  • Interceptors at every stage of communication process for easy customization
  • Supports both websockets and plain http queries, with http chunked response for plain http subscriptions
  • Mutable context allowing to keep request-scoped connection/authentication data and operation-scoped state

Usage

Assuming gorilla websocket upgrader

import (
	"net/http"

	"github.com/eientei/wsgraphql/v1"
	"github.com/eientei/wsgraphql/v1/compat/gorillaws"
	"github.com/gorilla/websocket"
	"github.com/graphql-go/graphql"
)
schema, err := graphql.NewSchema(...)
if err != nil {
	panic(err)
}

srv, err := wsgraphql.NewServer(
	schema,
	wsgraphql.WithUpgrader(gorillaws.Wrap(&websocket.Upgrader{
		Subprotocols: []string{
			wsgraphql.WebsocketSubprotocolGraphqlWS.String(),
			wsgraphql.WebsocketSubprotocolGraphqlTransportWS.String(),
		},
	})),
)
if err != nil {
	panic(err)
}

http.Handle("/query", srv)

err = http.ListenAndServe(":8080", nil)
if err != nil {
	panic(err)
}

Examples

See /v1/examples