标签: grpc-dart

dart Grpc 的拦截器

我正在开发一个使用 Grpc 连接到服务器的 flutter 应用程序。有些服务需要额外的元数据进行身份验证,因此我首先想到的是实现一个拦截器以将元数据添加到这些请求中,如下所示:

class MyClientInterceptor implements ClientInterceptor {

  @override
  ResponseFuture<R> interceptUnary<Q, R>(ClientMethod<Q, R> method, Q request, CallOptions options, invoker) {

    var newOptions = CallOptions.from([options])
      ..metadata.putIfAbsent('token', () => 'Some-Token');
    return invoker(method, request, newOptions);
  }
}
Run Code Online (Sandbox Code Playgroud)

但我明白了Caught error: Unsupported operation: Cannot modify unmodifiable map,因为 CallOptions 使用不可修改的映射。

第一个问题:向某些请求添加身份验证而不是使用这些元数据创建客户端存根的最佳实践是什么?

第二:如何从选项中复制元数据,修改它并使用修改后的对象?

dart grpc flutter grpc-dart

6
推荐指数
1
解决办法
3450
查看次数

如何在发送数据之前使用自定义加密对 GRPC 消息进行加密?

注意:我有足够的理由在 TLS 之上添加额外的安全层并使用 SSL 证书。

我想要做的是,在发出 grpc 请求之前,我想加密 grpc 请求并发送类似字节数组的内容。

在谷歌小组中,他们提出了一个想法来执行以下操作(链接:https : //groups.google.com/forum/# ! msg/ grpc-io/ SeD6KjU5yhE/ kzNd0gHgAQAJ

message PlainChatMessage {
   string text = 1;
   int ....
}

// define your RPC request and responses using this message
message EncryptedChatMessage
{
   bytes encrypted_data = 1;
}

Run Code Online (Sandbox Code Playgroud)

所以,基本上我需要将我所有的 PlainChatMessage 请求加密为加密消息。我该如何实现这样的事情?

encryption dart grpc grpc-dart

5
推荐指数
0
解决办法
262
查看次数

在 Flutter 项目中使用 Grpc Web

我希望有人可以帮助解决我目前正在创建一个适用于 Web 和移动设备的 Flutter 应用程序的问题,并且我想使用 GRPC 和 WebGrpc。使用 Grpc 一切都运行良好,但使用 Web Grpc 时出现错误

   if (kIsWeb) {
    print("flutter web");
    clientChannel =
        GrpcWebClientChannel.xhr(Uri.parse('http://192.168.2.146:8880'));
    AuthClient(clientChannel).authenticate(AuthenticationRequest()
      ..login = "Apfel"
      ..password= "Hello").then((res) => print(res)).catchError((err) => print(err));
  } else {
    print("flutter mobil");
    clientChannel = ClientChannel('192.168.2.146',
        port: 3009,
        options:
        ChannelOptions(credentials: ChannelCredentials.insecure()));
  }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误预期为“ClientChannel”类型的值,但得到了“GrpcWebClientChannel”类型之一

dart grpc flutter grpc-web grpc-dart

5
推荐指数
0
解决办法
1557
查看次数

当我从 Flutter 应用程序向 gRPC 端点发出请求时,出现 gRPC Invalid UTF-8

我正在尝试将 Flutter 应用程序连接到 gRPC 服务器。\n它过去在我的旧笔记本电脑上运行良好,但现在当我尝试向端点发出请求时总是收到此错误:

\n
gRPC Error (code: 13, codeName: INTERNAL, message: grpc: error unmarshalling request: string field contains invalid UTF-8, details: [], rawResponse: null)\n
Run Code Online (Sandbox Code Playgroud)\n

当我使用另一个gRPC客户端(例如bloomRPC)时,调用成功并且我得到了正确的数据。\nFlutter应用程序调用甚至没有到达端点服务(我在那里放了一个println来测试它,它没有打印任何内容)当我从 Flutter 应用程序进行调用时,但在使用bloomRPC 时它确实会打印它)。

\n

这是我的客户端连接代码:

\n
class GrpcClient {\n  late ClientChannel client;\n  static final GrpcClient _connection = GrpcClient._connect();\n\n  factory GrpcClient() => _connection;\n  \n  GrpcClient._connect(){\n    client = ClientChannel(\n     "10.0.2.2",\n      port: 8080,\n      options: ChannelOptions(credentials: ChannelCredentials.insecure(), connectionTimeout:Duration(seconds: 10))\n    );\n\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我用 运行服务器 GODEBUG=http2debug=2 go run .。当我从 Bloom 拨打电话时得到以下输出:

\n
2021/12/27 22:23:52 http2: Framer …
Run Code Online (Sandbox Code Playgroud)

grpc flutter grpc-dart

3
推荐指数
1
解决办法
7182
查看次数

标签 统计

grpc ×4

grpc-dart ×4

dart ×3

flutter ×3

encryption ×1

grpc-web ×1