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 }