首先将nodejs的server服务启动(使用的是上次nodejs的server服务)
node server/nodeservice_server.js
服务启动没问题后,新建一个golang的文件main.go
。
代码如下
package main
import (
"fmt"
"log"
"time"
pb "github.com/zmisgod/test"
"golang.org/x/net/context"
"google.golang.org/grpc"
)
const (
//node server端绑定的50051端口
address = "0.0.0.0:50051"
)
func main() {
conn, err := grpc.Dial(address, grpc.WithInsecure())
if err != nil {
log.Fatalf("do not connect: %v", err)
}
defer conn.Close()
c := pb.NewNodeServiceClient(conn)
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
r, err := c.Png2Svg(ctx, &pb.Png2SvgRequest{ImgUrl: "https://d30y9cdsu7xlg0.cloudfront.net/png/120046-200.png", Width: 300, Height: 300})
if err != nil {
log.Fatalf("connect err : %v", err)
}
if r.Code == 1 {
fmt.Println(r.SvgSourceCode)
} else {
fmt.Println(r.Msg)
}
}
上面的要点是
r, err := c.Png2Svg(ctx, &pb.Png2SvgRequest{
ImgUrl: "https://d30y9cdsu7xlg0.cloudfront.net/png/120046-200.png",
Width: 300,
Height: 300
})
Png2Svg
是我们在nodeservice .proto
文件定义的一个rpc
服务。传递的就是这个服务定义的request
message Png2SvgRequest {
string img_url = 1;//图片url,例如https://d30y9cdsu7xlg0.cloudfront.net/png/120046-200.png
int32 width = 2;//导出的svg宽度
int32 height = 3;//导出的svg高度
}
这个golang版本的grpc的client端就完成了。