设为首页 加入收藏

TOP

golang开发一个简单的grpc(二)
2023-07-23 13:29:45 】 浏览:49
Tags:golang 简单的 grpc
请求。 grpcServer := grpc.NewServer() // 注册服务 helloservice.RegisterHelloServiceServer(grpcServer, new(helloservice.HelloService)) // 开启一个tcp监听 listen, err := net.Listen("tcp", ":1234") if err != nil { log.Fatal(err) } log.Println("server started...") // 在监听器 listen 上接受传入的连接,创建一个新的ServerTransport 和 service goroutine。 服务 goroutine读取 gRPC 请求,然后调用注册的处理程序来回复它们。 log.Fatal(grpcServer.Serve(listen)) }

然后我们启动下看下效果

go run helloservice/main/main.go
2022/10/13 23:07:46 server started...

4、grpc客户端

接着我们编写客户端的代码helloclient/main.go

package main

import (
	"context"
	"fmt"
	"google.golang.org/grpc"
	"grpcdemo/helloservice"
	"io"
	"log"
	"time"
)

func main() {
	// 连接grpc服务端
	conn, err := grpc.Dial("localhost:1234", grpc.WithInsecure())
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close()

  // 一元rpc
	unaryRpc(conn)
  // 流式rpc
	streamRpc(conn)

}


func unaryRpc(conn *grpc.ClientConn) {
  // 创建grpc客户端
	client := helloservice.NewHelloServiceClient(conn)
  // 发送请求
	reply, err := client.Hello(context.Background(), &helloservice.String{Value: "hello"})
	if err != nil {
		log.Fatal(err)
	}
	log.Println("unaryRpc recv: ", reply.Value)
}

func streamRpc(conn *grpc.ClientConn) {
  // 创建grpc客户端
	client := helloservice.NewHelloServiceClient(conn)
  // 生成ClientStream
	stream, err := client.Channel(context.Background())
	if err != nil {
		log.Fatal(err)
	}

	go func() {
		for {
      // 发送消息
			if err := stream.Send(&helloservice.String{Value: "hi"}); err != nil {
				log.Fatal(err)
			}
			time.Sleep(time.Second)
		}
	}()

	for {
    // 接收消息
		recv, err := stream.Recv()
		if err != nil {
			if err == io.EOF {
				break
			}
			log.Fatal(err)
		}

		fmt.Println("streamRpc recv: ", recv.Value)

	}
}
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇grpc中的拦截器 下一篇grpc错误处理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目