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 }