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  }