github.com/maeglindeveloper/gqlgen@v0.13.1-0.20210413081235-57808b12a0a0/example/chat/server/server.go (about)

     1  package main
     2  
     3  import (
     4  	"log"
     5  	"net/http"
     6  	"net/url"
     7  	"time"
     8  
     9  	"github.com/99designs/gqlgen/graphql/handler/extension"
    10  	"github.com/99designs/gqlgen/graphql/handler/transport"
    11  
    12  	"github.com/99designs/gqlgen/graphql/playground"
    13  
    14  	"github.com/99designs/gqlgen/example/chat"
    15  	"github.com/99designs/gqlgen/graphql/handler"
    16  	"github.com/gorilla/websocket"
    17  	"github.com/opentracing/opentracing-go"
    18  	"github.com/rs/cors"
    19  	"sourcegraph.com/sourcegraph/appdash"
    20  	appdashtracer "sourcegraph.com/sourcegraph/appdash/opentracing"
    21  	"sourcegraph.com/sourcegraph/appdash/traceapp"
    22  )
    23  
    24  func main() {
    25  	startAppdashServer()
    26  
    27  	c := cors.New(cors.Options{
    28  		AllowedOrigins:   []string{"http://localhost:3000"},
    29  		AllowCredentials: true,
    30  	})
    31  
    32  	srv := handler.New(chat.NewExecutableSchema(chat.New()))
    33  
    34  	srv.AddTransport(transport.POST{})
    35  	srv.AddTransport(transport.Websocket{
    36  		KeepAlivePingInterval: 10 * time.Second,
    37  		Upgrader: websocket.Upgrader{
    38  			CheckOrigin: func(r *http.Request) bool {
    39  				return true
    40  			},
    41  		},
    42  	})
    43  	srv.Use(extension.Introspection{})
    44  
    45  	http.Handle("/", playground.Handler("Todo", "/query"))
    46  	http.Handle("/query", c.Handler(srv))
    47  
    48  	log.Fatal(http.ListenAndServe(":8085", nil))
    49  }
    50  
    51  func startAppdashServer() opentracing.Tracer {
    52  	memStore := appdash.NewMemoryStore()
    53  	store := &appdash.RecentStore{
    54  		MinEvictAge: 5 * time.Minute,
    55  		DeleteStore: memStore,
    56  	}
    57  
    58  	url, err := url.Parse("http://localhost:8700")
    59  	if err != nil {
    60  		log.Fatal(err)
    61  	}
    62  	tapp, err := traceapp.New(nil, url)
    63  	if err != nil {
    64  		log.Fatal(err)
    65  	}
    66  	tapp.Store = store
    67  	tapp.Queryer = memStore
    68  
    69  	go func() {
    70  		log.Fatal(http.ListenAndServe(":8700", tapp))
    71  	}()
    72  	tapp.Store = store
    73  	tapp.Queryer = memStore
    74  
    75  	collector := appdash.NewLocalCollector(store)
    76  	tracer := appdashtracer.NewTracer(collector)
    77  	opentracing.InitGlobalTracer(tracer)
    78  
    79  	log.Println("Appdash web UI running on HTTP :8700")
    80  	return tracer
    81  }