github.com/matiasanaya/gqlgen@v0.6.0/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/example/chat" 10 "github.com/99designs/gqlgen/handler" 11 gqlopentracing "github.com/99designs/gqlgen/opentracing" 12 "github.com/gorilla/websocket" 13 "github.com/opentracing/opentracing-go" 14 "sourcegraph.com/sourcegraph/appdash" 15 appdashtracer "sourcegraph.com/sourcegraph/appdash/opentracing" 16 "sourcegraph.com/sourcegraph/appdash/traceapp" 17 ) 18 19 func main() { 20 startAppdashServer() 21 22 http.Handle("/", handler.Playground("Todo", "/query")) 23 http.Handle("/query", handler.GraphQL(chat.NewExecutableSchema(chat.New()), 24 handler.ResolverMiddleware(gqlopentracing.ResolverMiddleware()), 25 handler.RequestMiddleware(gqlopentracing.RequestMiddleware()), 26 handler.WebsocketUpgrader(websocket.Upgrader{ 27 CheckOrigin: func(r *http.Request) bool { 28 return true 29 }, 30 })), 31 ) 32 log.Fatal(http.ListenAndServe(":8085", nil)) 33 } 34 35 func startAppdashServer() opentracing.Tracer { 36 memStore := appdash.NewMemoryStore() 37 store := &appdash.RecentStore{ 38 MinEvictAge: 5 * time.Minute, 39 DeleteStore: memStore, 40 } 41 42 url, err := url.Parse("http://localhost:8700") 43 if err != nil { 44 log.Fatal(err) 45 } 46 tapp, err := traceapp.New(nil, url) 47 if err != nil { 48 log.Fatal(err) 49 } 50 tapp.Store = store 51 tapp.Queryer = memStore 52 53 go func() { 54 log.Fatal(http.ListenAndServe(":8700", tapp)) 55 }() 56 tapp.Store = store 57 tapp.Queryer = memStore 58 59 collector := appdash.NewLocalCollector(store) 60 tracer := appdashtracer.NewTracer(collector) 61 opentracing.InitGlobalTracer(tracer) 62 63 log.Println("Appdash web UI running on HTTP :8700") 64 return tracer 65 }