Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

etest-sdk

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

etest-sdk

ETest 用于前端使用的 SDK

latest
npmnpm
Version
1.0.46
Version published
Maintainers
1
Created
Source

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,主要区别是解包方式不同

FAQs

Package last updated on 28 Aug 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts