github.com/vcilabs/webrpc@v0.5.2-0.20201116131534-162e27b1b33b/_examples/golang-nodejs/server/server.go (about) 1 package main 2 3 import ( 4 "context" 5 "log" 6 "net/http" 7 8 "github.com/go-chi/chi" 9 "github.com/go-chi/chi/middleware" 10 ) 11 12 func main() { 13 err := startServer() 14 if err != nil { 15 log.Fatal(err) 16 } 17 } 18 19 func startServer() error { 20 r := chi.NewRouter() 21 r.Use(middleware.RequestID) 22 r.Use(middleware.Logger) 23 r.Use(middleware.Recoverer) 24 25 r.Get("/", func(w http.ResponseWriter, r *http.Request) { 26 w.Write([]byte(".")) 27 }) 28 29 webrpcHandler := NewExampleServiceServer(&ExampleServiceRPC{}) 30 r.Handle("/*", webrpcHandler) 31 32 log.Printf("Starting webrpc server on localhost:4242") 33 34 return http.ListenAndServe(":4242", r) 35 } 36 37 type ExampleServiceRPC struct { 38 } 39 40 func (s *ExampleServiceRPC) Ping(ctx context.Context) (bool, error) { 41 return true, nil 42 } 43 44 func (s *ExampleServiceRPC) GetUser(ctx context.Context, req *GetUserRequest) (*User, error) { 45 if req.UserID == 911 { 46 return nil, ErrorNotFound("unknown userID %d", 911) 47 } 48 49 return &User{ 50 ID: req.UserID, 51 Username: "hihi", 52 }, nil 53 }