简介
@koverse/koverse-thrift-client 是一个基于 Node.js 的 NPM 包,用于在前端应用程序中进行 Thrift 服务的调用。它使用异步操作与服务通讯,并支持服务端和客户端的连接池、连接超时和连接重试等功能。此外,它还支持通过 Promise 和 Async/Await 实现异步编程。
本文将详细介绍 @koverse/koverse-thrift-client 的使用方法和相关注意点,并带有示例代码。
安装和配置
使用 @koverse/koverse-thrift-client,需要 Node.js 的版本不低于 6.5.0。安装该包可以使用 NPM:
--- ------- ------ ------------------------------
如需在 TypeScript 中使用,还需要安装 @types/node:
--- ------- ---------- -----------
在使用之前,需要进行以下几个配置:
- 导入包
-- --- -- ------ -------- ---- --------------------------------- -- -------- -- ----- -------- - ------------------------------------------
- 创建 Thrift 客户端
----- ------ - ----- ----------------------- -- ------- -- ---
参数 Options 中包含以下几个属性:
host
{string} Thrift 服务的地址,如:'127.0.0.1',默认为 'localhost'。port
{number} Thrift 服务的端口,如:'9090',默认为 9090。serviceName
{string} 指定 Thrift 服务的名称,如:'MyThriftService',默认为 null。transport
{string} Thrift 传输层的协议类型,如:'buffered'、'framed'、'http' 等,默认为 'framed'。protocol
{string} Thrift 序列化协议类型,如:'binary'、'compact' 等,默认为 'binary'。connectionOpts
{Object} 连接参数,包含以下属性:max_attempts
{number} 最多尝试连接的次数,默认为 0,表示无限次尝试。retry_delay
{number} 重试延迟时间(毫秒),默认为 1000。connect_timeout
{number} 连接超时时间(毫秒),默认为 3000。retry_strategy
{Function} 自定义重试策略函数,如果未指定,则使用默认的重试策略函数。
- 调用服务
----- ---- - ----- ----------------------- ----- -----
其中,methodName 为 Thrift 服务中的方法名,arg1, arg2, ... 为该方法的参数。
异步编程
@koverse/koverse-thrift-client 支持 Promise 和 Async/Await 两种方式实现异步编程。
- Promise
----------------------- ----- ---- ---------- -- - -- ----- -- ---------- -- - -- ---- ---
- Async/Await
----- -------- -------------- - ----- ---- - ----- ----------------------- ----- ----- -- ----- -
在使用 Async/Await 时,必须将该函数声明为 async 函数。
示例代码
------ -------- ---- --------------------------------- ----- -------- ------ - -- ----- ----- ------ - ----- ----------------------- ----- ------------ ----- ----- ------------ ------------------ ---------- --------- --------- --------- --------------- - ------------- -- ------------ ----- ---------------- ---- - --- -- ---- ----- ---- - ----- ----------------------- ----- ----- ------------------ - ---------------- -- - ------------------- ---
注意事项
在使用 AutoGenerated 序列化协议时,必须先确保该协议生成文件已被正确安装。
在使用 Transport 层时,由于某些 Transport 不支持
pause
和resume
方法,在应用程序中使用这些方法可能会导致应用程序阻塞。因此,建议使用framed
和buffered
两种 Transport 类型。在使用 Thrift 服务时,应该仔细阅读服务的 API 文档,了解服务接口的参数类型、返回值类型和异常类型等信息。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/113332