Skip to content

apito-cms/wsgraphql

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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/apito-cms/wsgraphql/v1"
	"github.com/apito-cms/wsgraphql/v1/compat/gorillaws"
	"github.com/gorilla/websocket"
	"github.com/tailor-inc/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

About

graphql-go over websockets using graphql-[transport-]ws protocols

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 98.8%
  • HTML 1.2%