1.0.46 • Published 10 months ago

etest-sdk v1.0.46

Weekly downloads
-
License
ISC
Repository
-
Last release
10 months ago

ETest SDK

SDK 与 服务器 ETestS 之间建立 websocket 连接,以二进制的格式发送数据,支持 RPC (远程过程调用)和频道订阅两种方式通信。

SDK包括两部分,一个是基础通信 API (ETestSdk),一个是数据库 API (ETestDb)。

安装

npm install etest-sdk

测试

包含服务端 mocker,目前添加了一个更新网络变量的测试用例

npm run watch
node lib/tests/test_mocker.js

使用

import { ETestSDK, ETestDb } from 'etest-sdk'
// 创建SDK对象
const sdk = new ETestSDK()
// 打开websocket连接
sdk.Open('ws://xxx')
// 调用下位机API
sdk.Call('S', '0', apiName, apiData)

// 创建db对象
const db = new ETestDb(sdk)
db.set('k1', [100, 200])

ETestSDK API

Open(url)

  • 打开websocket连接
  • 参数:websocket url
  • 返回值:Promise<true | error> 对象
try {
  await sdk.Open('ws://127.0.0.1:8610/etest4/C/@')
  console.log('open websocket success')
} catch (e) {
  console.log('open websocket failed')
}

Close()

  • 关闭websocket连接
  • 参数:无
  • 返回值:无
sdk.Close()

Call(role, key, fn, params)

  • 发送请求
  • 参数:
    • role:角色,此处固定为 S
    • key:执行器编号,此处固定为 0
    • fn:api名称
    • params:api参数
  • 返回值:Promise<result>
sdk.Call('S', '0', 'designPairwise', {...})

onClose(callback)

  • 监听 websocket close 事件
  • 参数:callback - 回调函数
  • 返回值:无
sdk.onClose(() => {
  // websocket断开后执行
})

onError(callback)

  • 监听 error 事件
  • 参数:callback - 回调函数
  • 返回值:无
sdk.onError(() => {
  // websocket连接出错后执行
})

onChannel(chan, callback)

  • 频道订阅
  • 参数
    • chan:频道名称
    • callback:回调函数
  • 返回值:无
sdk.onChannel('ideDiagnostic', () => {
  // 每次服务器发送 ideDiagnostic 通知时执行
})

offChannel(chan, callback)

onOutput(callback)

  • 监听执行器输出
  • 参数
    • callback:回调函数
  • 返回值:无
sdk.onOutput((data) => {
  // 处理输出结果
})

onNetvar(callback)

  • 监听网络变量
  • 参数
    • callback = (data) => void:回调函数
      • data: { isInit: boolean, data: Array }
  • 返回值:无
sdk.onNetvar((data) => {
  // 网络变量
})
  • 解除频道订阅
  • 参数
    • chan:频道名称
    • callback:回调函数
  • 返回值:无
sdk.offChannel('ideDiagnostic', () => {
  // 解除 ideDiagnostic 订阅时执行
})

ETestDb API

ETestDb 的 API主要分为三类:基本的键值对操作、Hash操作、List操作

ETestDb

  • 参数:
    • sdk: ETestSDK实例对象
    • type: 数据库类型 - sysDb: 系统数据库(默认), runDb: 运行时数据库
// 创建db对象
const db = new ETestDb(sdk, type)
db.set('k1', [100, 200])

基础操作

API返回值说明
set(key: string, value: any)Promise<number>新增或者设置键值对到数据库中
get(key: string)Promise<any>从数据库中查询指定 key 的值
del(key: string)Promise<number>从数据库删除指定 key

Hash操作

Hash是一个键值对映射表,通常用于存储对象,在此可以简单理解为js对象。

API返回值说明
hashSet(name: string, key: string, value: any)Promise<number>设置哈希表 name 中 字段(属性) key 的值为 value
hashGet(name: string, key: string)Promise<any>获取存储在哈希表中指定字段的值
hashDel(name: string, key: string)Promise<number>删除哈希表中的指定字段
hashScan(name: string, start: string, end: string, limit: number)Promise<{ [key: string]: any }>扫描哈希表中指定区间中指定长度为 limit 的元素,并将结果以键值对形式返回。其中参数startendkey值,而非数字。 startend均为nulllimit 为哈希表长度,则返回的是整个哈希表
hashList(name: string, start: string, end: string, limit: number)Promise<number>获取哈希表中指定区间中指定长度为 limit 的元素的 key 值,并将结果以数组形式返回。其中参数startendkey值,而非数字。 startend均为nulllimit 为哈希表长度,则返回的是整个哈希表的 key 集合
hashClear(name: string, start: string, end: string)Promise<number>删除指定 key 为 startend 直接的元素。startend均为null,则清空整个哈希表
ashSize(name: string)Promise<number>获取哈希表长度

List操作

List在此可以理解为js数组。

API返回值说明
listPush(name: string, value: any)Promise<number>在列表尾部插入一个元素
listUnshift(name: string, value: any)Promise<number>在列表头部插入一个元素
listPop(name: string)Promise<number>移除列表最后一个元素
listShift(name: string)Promise<number>移除列表的第一个元素
listIndex(name: string, idx: number)Promise<any>获取列表中索引为 idx 的元素
listSet(name: string, idx: number, value: any)Promise<number>设置列表中索引为 idx 元素的值
listSize(name: string)Promise<number>获取列表的长度
listRange(name: string, start: number, end: numberPromise<Array<any>>获取列表指定范围内的元素
listRangeNative(name: string, start: number, end: numberPromise<Array<any>>获取主题数据相关的list,主要区别是解包方式不同
1.0.46

10 months ago

1.0.45

10 months ago

1.0.44

12 months ago