找回密码
 立即注册
查看: 406|回复: 0

flutter grpc简单实现

[复制链接]
发表于 2022-2-9 13:06 | 显示全部楼层 |阅读模式
配置环境
1.安装 Dart SDK 或是 Flutter SDK,然后配置它们的环境变量
2.安装 protobuf
brew install protobuf
3.安装protoc_plugin
pub global activate protoc_plugin
4.在 bash_profile (M1的话应该是 zshrc里)下添加
export PATH="$PATH":"$HOME/.pub-cache/bin"
5.我使用的是 IDEA 进行开发,可以安装一个叫 Protocol Buffer Editor 的插件,来帮助我们更好地编辑 .proto 文件。
6.Dart 工程,在其pusepc.yaml里添加依赖:
dependencies:  protobuf: ^2.0.0  grpc: ^3.0.0
Demo
1.创建并生成文件
在lib目录下创建.proto文件


结构.png

2.编写proto文件

syntax = "proto3";package helloworld;service Greeter{  rpc SayHello(HelloRequest) returns (HelloReply){}}message HelloRequest{  string name = 1;}message HelloReply{  string message = 1;}
3.在 lib 目录下,我们新建一个 src/generated 文件夹,用于存放我们待会要生成的文件。
4.生成文件
(1)cd项目到 lib文件下
cd /Users/second/Desktop/dev/XXX项目名XXX/lib
(2)生成proto
protoc --dart_out=grpc:src/generated -Iprotos protos/helloworld.proto其中:src/generated:表示lib下存放生成文件的路径Iprotos:I+编辑的.proto文件文件夹路径protos/helloworld.proto:表示lib下存放编写.proto文件的路径
这样 generated 文件夹下就会生成相应的文件:
helloworld.pbjson.darthelloworld.pbgrpc.darthelloworld.pbenum.darthelloworld.pb.dart
5.调用
import 'package:grpc/grpc.dart';import 'package:grpc_learning/src/generated/helloworld.pbgrpc.dart';void main() async {  final channel = ClientChannel(    'localhost',    port: 50051,    options: ChannelOptions(      credentials: ChannelCredentials.insecure(),      codecRegistry:          CodecRegistry(codecs: const [GzipCodec(), IdentityCodec()]),    ),  );  final stub = GreeterClient(channel);  final name = 'world';  try {    final response = await stub.sayHello(HelloRequest()..name = name);    print('Greeter client received: ${response.message}');  } catch (e) {    print('error  = ${e.toString()}');  }  await channel.shutdown();}
6.运行
分别运行客户端和服务端,使用dart server.dart和dart client.dart来执行。
参考文档:
https://blog.csdn.net/u013066292/article/details/118727301
https://www.cnblogs.com/Jeely/p/12389012.html
https://www.youtube.com/watch?v=R873BlNVUB4
https://docs.servicestack.net/grpc-dart
https://www.cnblogs.com/codeBang/p/13324122.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-30 12:30 , Processed in 0.107890 second(s), 35 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表