github.com/fortexxx/gqlgen@v0.10.3-0.20191216030626-ca5ea8b21ead/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.Websocket{
    35  		KeepAlivePingInterval: 10 * time.Second,
    36  		Upgrader: websocket.Upgrader{
    37  			CheckOrigin: func(r *http.Request) bool {
    38  				return true
    39  			},
    40  		},
    41  	})
    42  	srv.Use(extension.Introspection{})
    43  
    44  	http.Handle("/", playground.Handler("Todo", "/query"))
    45  	http.Handle("/query", c.Handler(srv))
    46  
    47  	log.Fatal(http.ListenAndServe(":8085", nil))
    48  }
    49  
    50  func startAppdashServer() opentracing.Tracer {
    51  	memStore := appdash.NewMemoryStore()
    52  	store := &appdash.RecentStore{
    53  		MinEvictAge: 5 * time.Minute,
    54  		DeleteStore: memStore,
    55  	}
    56  
    57  	url, err := url.Parse("http://localhost:8700")
    58  	if err != nil {
    59  		log.Fatal(err)
    60  	}
    61  	tapp, err := traceapp.New(nil, url)
    62  	if err != nil {
    63  		log.Fatal(err)
    64  	}
    65  	tapp.Store = store
    66  	tapp.Queryer = memStore
    67  
    68  	go func() {
    69  		log.Fatal(http.ListenAndServe(":8700", tapp))
    70  	}()
    71  	tapp.Store = store
    72  	tapp.Queryer = memStore
    73  
    74  	collector := appdash.NewLocalCollector(store)
    75  	tracer := appdashtracer.NewTracer(collector)
    76  	opentracing.InitGlobalTracer(tracer)
    77  
    78  	log.Println("Appdash web UI running on HTTP :8700")
    79  	return tracer
    80  }