系统接口总览

接口用途权限
Beat链路保持ANY
ActionSelect获取功能定义LOGON
ServerLinks获取服务端链路LOGON
ServerState获取服务端状态LOGON
Signature签名校验ANY
Enums获取枚举定义ANY

链路保持(Beat)

  • PKG: com.joyzl.base.actions.Beat
  • URI: /actions/Beat
  • 权限: ANY
  • 广播: 无

当客户端(TCP Socket)连接没有任何请求而空闲时,应发送此请求以保持链路; 基于C/S模式的客户端在空闲时,默认3分钟发送链路保持请求。 基于B/S模式(HTTP WEB)的客户端无须使用此请求保持连接, 但可在其它请求失败且疑似网络中断时通过此请求检查连接是否恢复。

请求示例:

{
	//无参数
}

响应示例:

{
	"Status": 2
}

为什么需要链路保持?

操作系统的 TCP/IP Socket 实现已经包含链路保持的指令,由操作系统确保连接的有效性。 但这不能确保使用网络连接的应用程序是否正常,因此须通过特定指令确认连接两端的程序状态。

签名校验(Signature)

  • PKG: com.joyzl.base.actions.Signature
  • URI: /actions/Signature
  • 权限: ANY
  • 广播: 无

验证本地实体定义与服务端是否相同。 此接口由C/S客户端请求,并验证本地实体对象程序包与所连接的服务端是否完全相同。 客户端应当在连接建立后首先执行实体签名校验, 如果返回失败应断开连接并要求用户更新或获取匹配的客户端。 B/S客户端无须请求此接口。

请求示例:

{
	"Signature": "" // 必要,签名字符串
}

签名字符串可通过ODBS实例获得。

响应示例:

{
	"Status": 2
}

为什么需要校验实体签名?

B/S客户端通过 ODBSBinary 组件执行二进制序列化, 在执行序列化之前会预先扫描所有实体定义, 这将有助于优化序列化后的字节数量并提高安全性。 因此必须校验服务端与客户端的实体定义是否相同, 只有两端相同的定义才能确保数据可靠性。

获取功能定义(ActionSelect)

  • PKG: com.joyzl.base.actions.ActionSelect
  • URI: /actions/ActionSelect
  • 权限: LOGON
  • 广播: 无

查询服务端定义的所有功能和权限。 客户端可通过此接口获取需要授权的功能,供用户选择组合创建角色。 受服务端版本差异,已定义的功能也不完全相同。

请求示例:

{
	"Access": 0 // 可选权限类型:ANY 0、LOGON 1、AUTHORIZED 2、FORBIDDEN 9
}

响应示例:

{
	"Status": 2,
	"Functions": [
		{
			"Name": "服务端功能定义",
			"Group": "系统",
			"Action": "ActionSelect",
			"Access": 1
		},{
			"Name": "链路保持",
			"Group": "系统",
			"Action": "Beat",
			"Access": 0
		}
		...
	]
}

获取服务端状态(ServerState)

  • PKG: com.joyzl.base.actions.ServerState
  • URI: /actions/ServerState
  • 权限: LOGON
  • 广播: 无

查询服务器当前运行状态信息。

请求示例:

{
	// 无参数
}

响应示例:

{
	"Status": 2,
	"Threads": 64,				// 当前线程数
	"ThreadActives": 6,			// 活动线程数
	"ThreadCores": 60,			// 核心线程数(用户指定的数量)
	"ThreadLargest": 16,		// 最大并发线程数
	"ThreadMaximum": 64,		// 最大线程数
	"TaskQueue": 12,			// 排队的任务
	"TaskCount": 2,			// 在执行任务数
	"TaskCompleted": 1358,		// 完成任务数
	"MemoryTotal": 1073741824,	// 内存使用总量(字节)
	"MemoryFree": 1073741824,	// 内存空闲总量(字节)
	"MemoryMax": 1073741824,	// 内存最大总量(字节)
	"BufferUnits": 128,			// 空闲读写对象数量
	"BufferDatas": 12			// 空闲缓存单元数量
}

获取枚举定义(Enums)

  • PKG: 无
  • URI: /enums/[PKG]
  • 权限: ANY
  • 广播: 无

获取枚举定义项和值。 此接口仅供WEB前端使用,用于获取已定义的枚举项。 桌面客户端无须请求此接口。

请求示例:

http://192.168.8.2/enums/com/joyzl/scada/device/entities/AlarmType

http://192.168.8.2/enums/com.joyzl.scada.device.entities.AlarmType

响应示例:

[
    {
        "value": 0,
        "name": "RECORD",
        "text": "记录"
    },{
        "value": 1,
        "name": "NOTICE",
        "text": "一级报警"
    },{
        "value": 2,
        "name": "WARNING",
        "text": "二级报警"
    },{
        "value": 3,
        "name": "DANGER",
        "text": "三级报警"
    }
]

由于枚举未遵循JavaBean规范,因此枚举项返回字段名首字母未大写,这是枚举对象转换为JSON的例外情况。 其它接口如果有返回枚举值也属于此情形。