# 第三方交互 / TS-OPS

## `opsServer`

声明：class

在 SSEClient 基础上封装 TS-OPS 事件处理和数据上传；使用时传入事件处理函数，或继承该类并重写相应虚方法

<!-- tags: 自定义服务 服务端 服务注册 事件处理 数据上传 -->

父类：`SSEClient`

### `FOpsId`

声明：property

TS-OPS 服务 ID

<!-- tags: 服务标识 -->

可见性：`public`

类型：string

访问：read

### `FAsyncResults`

声明：property

存放事件处理结果的数组

<!-- tags: 异步结果 事件处理 -->

可见性：`public`

类型：array

访问：read

### `FLastId`

声明：property

最后一次记录的事件 ID，用于重新连接

<!-- tags: 事件标识 断线重连 -->

可见性：`public`

类型：integer

访问：read / write

### `FDataUrl`

声明：property

TS-OPS 服务数据上传地址

<!-- tags: 数据上传 服务地址 -->

可见性：`public`

类型：string

访问：read / write

### `FOPSList`

声明：property

要注册的 OPS 服务列表，多个服务之间用逗号分隔

<!-- tags: 服务注册 服务列表 -->

可见性：`public`

类型：string

访问：read / write

### `FOPSName`

声明：property

注册的 TS-OPS 服务名称，用于标识服务，可以为空字符串

<!-- tags: 服务注册 服务名称 -->

可见性：`public`

类型：string

访问：read / write

### `FCallBack`

声明：property

call 事件回调函数；未指定时必须重写 CallBack 方法

<!-- tags: 回调 事件处理 -->

可见性：`public`

类型：string\|tfunction

访问：read / write

### `FSubCallBack`

声明：property

subscription 事件回调函数；未指定时必须重写 WaitSubscription 方法

<!-- tags: 订阅 回调 事件处理 -->

可见性：`public`

类型：string\|tfunction

访问：read / write

### `FReturnRuntimeError`

声明：property

调用回调函数出错时是否返回详细错误，默认值为 false

<!-- tags: 错误处理 回调 -->

可见性：`public`

类型：boolean

访问：read / write

### `FDebug`

声明：property

是否打印调试信息，默认值为 true

<!-- tags: 调试 日志 -->

可见性：`public`

类型：boolean

访问：read / write

### `create(durl, opsName, opslist, cb, subcb, url, header, onmessage, u, p, s, reconn)`

声明：function

构造 opsServer 对象

<!-- tags: 构造 服务注册 事件处理 -->

可见性：`public`

| 参数        | 类型              | 说明                                                                              |
| ----------- | ----------------- | --------------------------------------------------------------------------------- |
| `durl`      | string            | TS-OPS 服务数据上传地址                                                           |
| `opsName`   | string            | 要注册的 TS-OPS 服务名称，用于标识服务，可以为空字符串                            |
| `opslist`   | string            | 要注册的服务列表；多个服务用逗号分隔，订阅服务使用 `__subscription__/服务名`      |
| `cb`        | string\|tfunction | call 事件回调函数；为空时必须重写 CallBack 方法                                   |
| `subcb`     | string\|tfunction | subscription 事件回调函数；为空时必须重写 WaitSubscription 方法                   |
| `url`       | string            | TS-OPS 服务注册地址                                                               |
| `header`    | string            | 注册服务时使用的请求头，例如 TS-OPS-CALL                                          |
| `onmessage` | tfunction\|nil    | 消息处理函数；可由 `FindFunction("函数名")` 取得，重写 DoOnMessage 时可以传入 nil |
| `u`         | string            | 用户名                                                                            |
| `p`         | string            | 用户密码                                                                          |
| `s`         | string            | 租户 Session Key；使用调用功能列表为 `*` 的特殊租户替代用户时指定                 |
| `reconn`    | boolean           | 是否启用断开自动重连                                                              |

### `CallBack(name, param, realdata)`

声明：function

处理 TS-OPS 服务端 call 事件；未指定 FCallBack 时必须重写该方法

<!-- tags: 调用 回调 事件处理 -->

可见性：`public`

修饰符：`virtual`

| 参数       | 类型              | 说明                                      |
| ---------- | ----------------- | ----------------------------------------- |
| `name`     | string\|tfunction | 函数名称或函数指针                        |
| `param`    | array\|tablearray | 传给目标函数的参数值列表                  |
| `realdata` | array\|tablearray | call 事件从服务器传输的函数名、参数等信息 |

返回：any

### `WaitSubscription(name, param, realdata)`

声明：function

处理 TS-OPS 服务端 subscription 事件；未指定 FSubCallBack 时必须重写该方法

<!-- tags: 订阅 回调 事件处理 -->

可见性：`public`

修饰符：`virtual`

| 参数       | 类型              | 说明                                              |
| ---------- | ----------------- | ------------------------------------------------- |
| `name`     | string\|tfunction | 函数名称或函数指针                                |
| `param`    | array\|tablearray | 传给目标函数的参数值列表                          |
| `realdata` | array\|tablearray | subscription 事件从服务器传输的函数名、参数等信息 |

返回：any

### `AsyncCall(durl, id, opsid, realdata, u, p, s, runerror, debug, sub, cb, caller)`

声明：function

处理 call 或 subscription 事件，调用服务端事件处理方法，并将结果上传后返回给请求方

<!-- tags: 异步调用 事件处理 数据上传 -->

可见性：`public`

| 参数       | 类型              | 说明                                                              |
| ---------- | ----------------- | ----------------------------------------------------------------- |
| `durl`     | string            | TS-OPS 服务数据上传地址                                           |
| `id`       | integer           | 事件 ID                                                           |
| `opsid`    | string            | TS-OPS 服务 ID                                                    |
| `realdata` | array\|tablearray | 事件从服务器传输的函数名、参数等信息                              |
| `u`        | string            | 用户名                                                            |
| `p`        | string            | 用户密码                                                          |
| `s`        | string            | 租户 Session Key；使用调用功能列表为 `*` 的特殊租户替代用户时指定 |
| `runerror` | boolean           | 调用回调函数出错时是否返回详细错误                                |
| `debug`    | boolean           | 是否打印调试信息                                                  |
| `sub`      | boolean           | true 表示 subscription 事件，false 表示 call 事件                 |
| `cb`       | string\|tfunction | 回调函数名称或函数指针                                            |
| `caller`   | string            | 类名；未指定回调字段时应传入重写了相应事件处理方法的类名          |

返回：boolean

### `DoOnMessage(id, event, data)`

声明：function

根据 event 类型处理 TS-OPS 事件

<!-- tags: 消息处理 事件处理 -->

可见性：`public`

| 参数    | 类型         | 说明                                                                                   |
| ------- | ------------ | -------------------------------------------------------------------------------------- |
| `id`    | integer\|nil | 事件 ID；connect、cancel 事件中为 nil                                                  |
| `event` | string       | 事件类型，主要包括 connect、call、subscription、cancel                                 |
| `data`  | string       | JSON 格式事件数据；connect 事件包含 opsid，call、subscription 事件包含 name、params 等 |
