1.0.46 • Published 10 months ago
etest-sdk v1.0.46
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参数
- role:角色,此处固定为
- 返回值:
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 }
- callback = (data) => void:回调函数
- 返回值:无
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 的元素,并将结果以键值对形式返回。其中参数start 和 end 为 key 值,而非数字。 若start 、end 均为null , limit 为哈希表长度,则返回的是整个哈希表 |
hashList(name: string, start: string, end: string, limit: number) | Promise<number> | 获取哈希表中指定区间中指定长度为 limit 的元素的 key 值,并将结果以数组形式返回。其中参数start 和 end 为 key 值,而非数字。 若start 、end 均为null , limit 为哈希表长度,则返回的是整个哈希表的 key 集合 |
hashClear(name: string, start: string, end: string) | Promise<number> | 删除指定 key 为 start 到 end 直接的元素。 若 start 、end 均为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: number | Promise<Array<any>> | 获取列表指定范围内的元素 |
listRangeNative(name: string, start: number, end: number | Promise<Array<any>> | 获取主题数据相关的list,主要区别是解包方式不同 |