gRPC服务端客户端代码编写

gRPC服务端编写

  1. 创建gRPC Server对象,你可以理解为他是Server端的抽象对象
  2. 将server(其包含需要被调用的服务端接口)注册到gRPC Server的内部注册中心
    这样可以在接收到请求时,通过内部的服务发现,发现该服务器端口并转接进行逻辑处理
  3. 创建Listen,监听TCP端口
  4. gRPC Server开始 lis。Accept,直到 Stop

先重写hello_grpc.pb.go里的SayHello方法,需要把相应的目录给import

package main

import (
	pb "GoPro/gRPC/hello-server/proto"
	"context"
	"fmt"

	"net"

	"google.golang.org/grpc"
)

type server struct {
	pb.UnimplementedSayHelloServer
}

func (s *server) SayHello(ctx context.Context, req *pb.HelloRequests) (*pb.HelloResponse, error) {
	return &pb.HelloResponse{ResponseMsg: "hello" + req.RequestName}, nil
}

实现使用

func main() {
	// 开启端口
	listen, _ := net.Listen("tcp", ":9090")
	// 创建gRPC服务
	grpcServer := grpc.NewServer()
	// 在gRPC服务端中去注册我们编写的服务
	pb.RegisterSayHelloServer(grpcServer, &server{})

	// 启动服务
	err := grpcServer.Serve(listen)
	if err != nil {
		fmt.Printf("failed to serve :%v ", err)
		return
	}
}

gRPC客户端编写

  1. 创建与给定目标(服务端)的连接交互
  2. 创建 server的客户端对象
  3. 发送RPC请求,等待同步响应,得到回调后返回响应结果
  4. 输出响应结果
package main

import (
	"context"
	"fmt"
	pb "gRPC_test/hello-server/proto"
	"log"

	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials/insecure"
)

func main() {
	// 连接到server端
	conn, err := grpc.Dial("127.0.0.1:9090", grpc.WithTransportCredentials(insecure.NewCredentials()))
	if err != nil {
		log.Fatalf("did not connect: #{err}")
	}
	// 所有连接用完都要关闭连接
	defer conn.Close()

	// 建立连接
	client := pb.NewSayHelloClient(conn)
	// context.Background()找到对应的上下文请求
	// 执行rpc调用(这个方法在服务端来实现并返回结果)
	resp, _ := client.SayHello(context.Background(), &pb.HelloRequests{RequestName: "krien"})

	fmt.Println(resp.GetResponseMsg())
}

最后实现客户端获取到服务端

运行服务端端口

[Running] go run "c:\Users\79120\Desktop\GoPro\gRPC\hello-client\main.go"
hellokrien

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值