<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 理解GRPC的使用 GRPC是一個使用[緩沖協議](https://developers.google.com/protocol-buffers)和[HTTP/2](https://http2.github.io/)構建的高性能RPC框架。在Go中創建GRPC客戶端與使用Go HTTP客戶端有很多相同的復雜性。 為了演示基本的客戶端使用情況,最簡單的方法是實現一個服務器。這個配方將創建一個歡迎服務,它接受問候和名稱并返回歡迎語句。 本文不會探討有關GRPC的一些細節,例如流媒體。 ### 實踐 1. 安裝第三方庫: 安裝GRPC https://github.com/grpc/grpc/blob/master/INSTALL.md. ``` go get github.com/golang/protobuf/proto go get github.com/golang/protobuf/protoc-gen-go ``` 2. 建立 greeter.proto: ``` syntax = "proto3"; package greeter; service GreeterService{ rpc Greet(GreetRequest) returns (GreetResponse) {} } message GreetRequest { string greeting = 1; string name = 2; } message GreetResponse{ string response = 1; } ``` 運行 ``` protoc --go_out=plugins=grpc:. greeter.proto ``` 3. 建立 server.go: ``` package main import ( "fmt" "net" "github.com/agtorre/go-cookbook/chapter6/grpc/greeter" "google.golang.org/grpc" ) func main() { grpcServer := grpc.NewServer() greeter.RegisterGreeterServiceServer(grpcServer, &Greeter{Exclaim: true}) lis, err := net.Listen("tcp", ":4444") if err != nil { panic(err) } fmt.Println("Listening on port :4444") grpcServer.Serve(lis) } ``` 4. 建立 greeter.go: ``` package main import ( "fmt" "github.com/agtorre/go-cookbook/chapter6/grpc/greeter" "golang.org/x/net/context" ) // Greeter 實現了protoc生成的接口 type Greeter struct { Exclaim bool } // Greet 實現grpc Greet func (g *Greeter) Greet(ctx context.Context, r *greeter.GreetRequest) (*greeter.GreetResponse, error) { msg := fmt.Sprintf("%s %s", r.GetGreeting(), r.GetName()) if g.Exclaim { msg += "!" } else { msg += "." } return &greeter.GreetResponse{Response: msg}, nil } ``` 5. 建立 client.go: ``` package main import ( "context" "fmt" "github.com/agtorre/go-cookbook/chapter6/grpc/greeter" "google.golang.org/grpc" ) func main() { conn, err := grpc.Dial(":4444", grpc.WithInsecure()) if err != nil { panic(err) } defer conn.Close() client := greeter.NewGreeterServiceClient(conn) ctx := context.Background() req := greeter.GreetRequest{Greeting: "Hello", Name: "Reader"} resp, err := client.Greet(ctx, &req) if err != nil { panic(err) } fmt.Println(resp) req.Greeting = "Goodbye" resp, err = client.Greet(ctx, &req) if err != nil { panic(err) } fmt.Println(resp) } ``` 6. 分別運行server.go和greeter.go,然后在另一個命令行運行client.go,這會輸出: ``` response:"Hello Reader!" response:"Goodbye Reader!" ``` ### 說明 GRPC服務器設置為偵聽端口4444.一旦客戶端連接,它就可以發送請求并從服務器接收響應。 請求,響應和支持的方法的結構由protoc生成的。實際上,當針對GRPC服務器進行集成時,應該提供.proto文件,該文件可用于自動生成客戶端 。 除了客戶端之外,protoc命令還會為服務器生成存根,所需的只是填寫實現細節。 生成的Go代碼也具有JSON標記,并且可以為JSON REST服務重用相同的結構。 我們的代碼設置了一個不安全的客戶端。 要安全地處理GRPC,你需要使用SSL證書。 * * * * 學識淺薄,錯誤在所難免。歡迎在群中就本書提出修改意見,以饗后來者,長風拜謝。 Golang中國(211938256) beego實戰(258969317) Go實踐(386056972)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看