chat app

Example app using subscriptions to build a chat room.

to run this server

go run ./example/chat/server/server.go

to run the react app

cd ./example/chat
npm install 
npm run start
Expand ▾ Collapse ▴




This section is empty.


This section is empty.


func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

    NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.


    type Chatroom

    type Chatroom struct {
    	Name      string
    	Messages  []Message
    	Observers map[string]struct {
    		Username string
    		Message  chan *Message

    type ComplexityRoot

    type ComplexityRoot struct {
    	Chatroom struct {
    		Messages func(childComplexity int) int
    		Name     func(childComplexity int) int
    	Message struct {
    		CreatedAt func(childComplexity int) int
    		CreatedBy func(childComplexity int) int
    		ID        func(childComplexity int) int
    		Text      func(childComplexity int) int
    	Mutation struct {
    		Post func(childComplexity int, text string, username string, roomName string) int
    	Query struct {
    		Room func(childComplexity int, name string) int
    	Subscription struct {
    		MessageAdded func(childComplexity int, roomName string) int

    type Config

    type Config struct {
    	Resolvers  ResolverRoot
    	Directives DirectiveRoot
    	Complexity ComplexityRoot

    func New

    func New() Config

    type DirectiveRoot

    type DirectiveRoot struct {
    	User func(ctx context.Context, obj interface{}, next graphql.Resolver, username string) (res interface{}, err error)

    type Message

    type Message struct {
    	ID        string    `json:"id"`
    	Text      string    `json:"text"`
    	CreatedBy string    `json:"createdBy"`
    	CreatedAt time.Time `json:"createdAt"`

    type MutationResolver

    type MutationResolver interface {
    	Post(ctx context.Context, text string, username string, roomName string) (*Message, error)

    type QueryResolver

    type QueryResolver interface {
    	Room(ctx context.Context, name string) (*Chatroom, error)

    type ResolverRoot

    type ResolverRoot interface {
    	Mutation() MutationResolver
    	Query() QueryResolver
    	Subscription() SubscriptionResolver

    type SubscriptionResolver

    type SubscriptionResolver interface {
    	MessageAdded(ctx context.Context, roomName string) (<-chan *Message, error)


    Path Synopsis