/
main1.go
80 lines (64 loc) · 1.65 KB
/
main1.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package main
import (
"flag"
"fmt"
"log"
"net"
"net/http"
pb "github.com/pudongping/go-grpc-service/proto"
"github.com/pudongping/go-grpc-service/server"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
var grpcPort string
var httpPort string
func init() {
flag.StringVar(&grpcPort, "grpc_port", "8001", "gRPC 启动端口号")
flag.StringVar(&httpPort, "http_port", "8002", "HTTP 启动端口号")
flag.Parse()
}
func main() {
errs := make(chan error)
go func() {
err := RunHttpServer1(httpPort)
if err != nil {
errs <- err
}
}()
go func() {
err := RunGrpcServer1(grpcPort)
if err != nil {
errs <- err
}
}()
select {
case err := <-errs:
log.Fatalf("Run Server err: %v", err)
}
}
func RunHttpServer1(port string) error {
serveMux := http.NewServeMux()
serveMux.HandleFunc("/ping", func(w http.ResponseWriter, r *http.Request) {
_, _ = w.Write([]byte(`pong`))
})
log.Printf("http server is started at: 127.0.0.1:%s \n", port)
return http.ListenAndServe(":"+port, serveMux)
}
func RunGrpcServer1(port string) error {
s := grpc.NewServer()
pb.RegisterTagServiceServer(s, server.NewTagServer())
// 注册反射服务,方便让 grpcurl 或者 grpcui 用作调试
// reflection 包是 gRPC 官方所提供的反射服务
reflection.Register(s)
lis, err := net.Listen("tcp", fmt.Sprintf(":%s", port))
log.Printf("grpc server is started at: 127.0.0.1:%s \n", port)
if err != nil {
log.Fatalf("net.Listen err: %v", err)
return err
}
return s.Serve(lis)
}
// 测试
// go run main1.go
// grpcurl -plaintext -d '{"name":"go"}' localhost:8001 proto.TagService/GetTagList
// curl http://127.0.0.1:8002/ping