React Native 上的 gRPC

gRPC on React Native

我使用 iOS 已经有一段时间了,我正在尝试使用 React Native。我遇到的一个障碍是如何将我的 gRPC 端点合并到 React Native 中,或者如果这从根本上是可能的。我试过简单地添加从 gRPC 生成的 node.js 代码,但无济于事。

我得到的最后一个答案是去年here

Node.js gRPC 库使用用 C++ 编写的本机扩展来完成大部分工作。 Linking Libraries page in the React Native documentation seems to indicate that such a library can be used on iOS, as long as you link it into your app directly with the rnpm 工具。

或者,您可以使用 React Native 文档中的 Objective C gRPC library by following the Native Modules 指南。

我不确定是否应该复制我自己的答案,因此,请查看潜在的纯 JavaScript 解决方案:

Implement gRPC in an iOS React Native app

也许以上可以减轻对 link 本机代码的依赖,并且仍然是跨平台的。

我正在开发 gRPC 生成器工具,它将自动生成 Swift/Java 代理 https://github.com/anjmao/rn-grpc-bridge

目前它已经在生成Swift 一元调用服务。示例 https://github.com/anjmao/rn-grpc-bridge/blob/master/examples/dist/book_grpc_pb_service.swift

在撰写本文时,Improbable Engineering's gRP-Web 无法与 React Native 一起使用。

相反,您必须使用 React Native Native Modules 并在 Java、Kotlin、Objective-C、and/or Swift.

中构建原生模块

你会:

  1. 以您设备的本地语言实现 gRPC 客户端,
  2. 使用 React Native 的 Native 模块框架导出它
  3. 通过 React Native 访问本机模块及其 gRPC 方法
  4. 在你的 Native 代码中调用那些导出的方法

例如,如果您要在 iOS/Swift 上构建,您需要执行以下操作:

Reat Native <-> ObjC Bridge <-> Swift <-> gRPC

在Android上会是这样的:

React Native <-> Android Java

我已经为 Building a gPRC Client in React Native on iOS 编写了教程。希望对你有帮助。

还有一个 Writing a native module for React Native using Kotlin

iOS/Objective-C and Android/Java 包含在 React Native 文档中