首页
苏兮影视
随笔记
壁纸
更多
直播
时光轴
友联
关于
统计
Search
1
软件添加id功能按钮
708 阅读
2
v2ray节点搭建
508 阅读
3
typecho非常有特色的模块
460 阅读
4
QQxml消息卡片生成源码
421 阅读
5
Linux下提权常用小命令
366 阅读
谈天说地
建站源码
经验教程
资源分享
动漫美图
登录
Search
标签搜索
java
flutter
springboot
rust
安卓
linux
vue
docker
joe
快捷键
git
fish shell
maven
redis
netty
dart
groovy
js
设计模式
rpc
尽意
累计撰写
95
篇文章
累计收到
38
条评论
首页
栏目
谈天说地
建站源码
经验教程
资源分享
动漫美图
页面
苏兮影视
随笔记
壁纸
直播
时光轴
友联
关于
统计
搜索到
1
篇与
的结果
2024-09-21
dart使用grpc
1.添加依赖项: 在你的 pubspec.yaml 文件中,添加 gRPC 和 protobuf 的依赖:dependencies: protobuf: ^3.1.0 grpc: ^4.0.12.安装 Dart 的 protoc_pluginprotoc_plugin 是 Dart 的 gRPC 插件,它可以将 .proto 文件编译为 Dart 代码。通过 Dart 的包管理工具 pub 来安装:dart pub global activate protoc_plugin 并配置环境变量3.生成 Protocol Buffers 代码: 创建一个 .proto 文件,定义服务和消息hello.proto:syntax = "proto3"; package hello; service Hello { rpc SayHello (HelloRequest) returns (HelloReply); } message HelloRequest { string name = 1; } message HelloReply { string message = 1; } 4.使用 protoc 生成 Dart 代码protoc --dart_out=grpc:lib/src/generated -I. lib/protos/hello.proto --dart_out=grpc:lib/src/generated:生成带 gRPC 支持的 Dart 文件,并将其放入 lib/src/generated 目录。-I .:指定 .proto 文件的路径(.表示当前目录)。lib/protos/hello.proto:指定你要编译的 .proto 文件。5.编写客户端代码client.dartimport 'package:grpc/grpc.dart'; import 'generated/protos/hello.pb.dart'; // 引入生成的消息定义 import 'generated/protos/hello.pbgrpc.dart'; // 引入生成的 gRPC 客户端和服务 Future<void> main() async { // 创建一个 gRPC 客户端连接到服务端,假设服务端在本地的 50051 端口 final channel = ClientChannel( 'localhost', port: 50051, options: const ChannelOptions(credentials: ChannelCredentials.insecure()), ); final client = HelloClient(channel); try { // 调用 sayHello 并打印响应 for(int i = 0;i<10;i++) { final response = await client.sayHello(HelloRequest() ..name = "hello grpc$i"); print('Received: $response'); } } finally { // 关闭客户端通道 await channel.shutdown(); } } 6.编写服务端代码server.dartimport 'package:grpc/grpc.dart'; import 'generated/protos/hello.pb.dart'; import 'generated/protos/hello.pbgrpc.dart'; // 实现 Hello 服务 class HelloService extends HelloServiceBase { @override Future<HelloReply> sayHello(ServiceCall call, HelloRequest request) async { print("server message:${request.name}"); // 构建响应 return HelloReply()..message = 'Hello, ${request.name}!'; } } Future<void> main() async { // 启动 gRPC 服务端 final server = Server.create(services: [HelloService()]); await server.serve(port: 50051); print('Server listening on port ${server.port}...'); } 7.运行代码运行服务端dart run lib/src/server.dart 运行客户端dart run lib/src/client.dart 项目的目录结构:
2024年09月21日
30 阅读
0 评论
2 点赞