WebSocket说明
# TaskRunner WebSocket说明
TaskRunner 包含 WebSocket 客户端与 WebSocket 服务器,可与 FastWeb 的 WebSocket 服务器或者TaskRunner 自带的WebSocket 服务器连接,其他客户端可发送 WebSocket 消息实现远程执行 TaskRunner 功能。如需要了解 FastWeb 中 WebSocket的通讯方式请参考 Bean通讯。
# 1. 设置
使用 WebSocket 服务的功能前,请先检查 TaskRunner 中 WebSocket 设置是否正确。如设置正确,TaskRunner 运行后日志中显示 WebSocket客户端连接成功
。
TaskRunner自带的WebSocket服务器的地址与HTTP服务地址一致,端口号也与HTTP服务的端口号一致。默认为 8080
,默认的WS路径使用 /message
。
使用websocket路径的格式如下:
ws://localhost:8080/message
如果服务端启用了SSL,假设示例端口为 8443
,默认的WS路径使用 /message
,则相应的路径格式如下:
wss://localhost:8443/message
如果启用了身份认证,则 WS 路径如下:
ws://localhost:8080/sgc/auth/url/{USERNAME}/{PASSWORD}
其中 {USERNAME}
与 {PASSWORD}
处分别修改为对应连接使用的用户名与密码。
# 2. 运用
TaskRunner 的任务执行需配合 FastWeb 或者通用WebSocket客户端使用。
# 2.1. 注册会话
连接至WebSocket服务器后,需注册会话才可使用TaskRunner的WebSocket功能。注册会话的格式如下:
{"action":"login","sid":"test"}
向WebSocket服务器发送上述指令后,客户端会话注册完成,使用的WS会话ID为 test
。
# 2.2. 发送字符串消息
向其它连接的客户端发送字符串消息,使用以下格式进行发送。
{"action":"msg","sid":"{SID}","text":"{TEXT}"}
{SID}
为目标客户端的注册会话ID,{TEXT}
为发送的文本信息。
# 2.3. PowerShell 批处理
以下是通过直接执行的方式运行批处理的示例。可调用批处理语句执行程序重启。
{"action":"script","syntaxtype":"powershell","script":"taskkill /im TARS.exe /f & ping 127.0.0.1 -n 1 & start \"\" \"C:\\Program Files\\IsoFace\\TARS\\TARS.exe\" "}
除上述方式外,也支持直接执行自定程序列表中批处理类型的自定程序。在自定程序列表中创建 tars
的powershell
类型自定程序,设计程序内容如下。
echo
:结束进程
taskkill /im TARS.exe /f
:执行下一步骤前等待1秒
ping 127.0.0.1 -n 1
start "" "C:\Program Files\IsoFace\TARS\TARS.exe"
echo
2
3
4
5
6
7
在任一已连接的WebSocket客户端中发送以下格式的信息,可执行上述批处理程序。
{"action":"script","taskname":"tars"}
# 2.4. JScript/PascalScript 任务
TaskRunner 通过 WebSocket 消息呼叫可实现 JScript/PascalScript 的执行。
{"action":"script","syntaxtype":"jscript","script":"{DoOpenBrowser(\"chrome.exe\",\"--kiosk https://www.isoface.cn \",0);}"}
除上述方式外,也支持执行自定程序列表中类型为 JScript
的自定程序。创建一个名为 browser
,类型为JScript
自定程序,内容如下。
//调用Chrome浏览器打开https://www.isoface.cn/网页
{
DoOpenBrowser("chrome.exe","--kiosk https://www.isoface.cn",0);
}
2
3
4
在任一已注册会话ID的WebSocket客户端中发送以下格式的信息,可执行上述JScript程序。
{"action":"script","taskname":"browser"}
如果需要在JS程序中引入参数信息,则 JScript
自定程序可改写如下,将需要参数化的变量取值替换为 UgParams.Values["param_name"]
:
{
DoOpenBrowser("chrome.exe","--kiosk " + UgParams.Values["url"],0);
}
2
3
如程序与参数直接通过json传入,直接调用的用法如下:
{
"action": "script",
"syntaxtype": "jscript",
"script": "{DoOpenBrowser(\"chrome.exe\",\"--kiosk \" + UgParams.Values[\"url\"],0);}",
"params":[{"name":"url","value":"https://www.isoface.cn"}]
}
2
3
4
5
6
如在自定程序中设置了参数,在任一已注册会话ID的WebSocket客户端中,发送以下格式的信息,可执行上述JScript程序。
{"action":"script","taskname":"browser","params":[{"name":"url","value":"https://www.isoface.cn"}]}
使用参数的json新增了 params
队列,可在其中根据参数需要修改取值。
{
"action": "script",
"taksname": "task_name",
"params": [
{
"name": "param_name1",
"value": "param_value1"
},
{
"name": "param_name2",
"value": "param_value2"
},
...
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 2.5. 在JS程序中使用WebSocket
如需要在JS自定程序中使用WebSocket功能,可参考自定函数与自定程序中的函数、程序说明使用。
- WSClient_WriteStream:客户端发送流消息。
- WSClient_WriteString:客户端发送字符串消息。
- WSClient_WriteIsoBean:客户端发送 IsoBean 关联的字符串信息。
- WSServer_BroadcastString:服务端发送字符串广播消息。
- WSServer_BroadcastStream:服务端发送流广播消息。
- WSServer_WriteStream:服务端发送流消息。
- WSServer_WriteString:服务端发送字符串消息。
- GetWebSocketGUID:根据会话ID获取WebSocket连接的GUID。
# 2.6. 执行数据库查询(SQL)
在 TaskRunner 中设置了数据库连接与预设 SQL 后,可利用 TaskRunner 来执行 SQL 查询。发送的格式内容如下:
直接发送 SQL 语句:在 WebSocket 消息中可直接发送 SQL 语句来执行查询。示例如下(包含参数用法):
{
"action": "execsql",
"db_name": "demo",
"sql": "Insert Into Table_Test(FCode,FName) values(:F1,:F2)",
"params": [
{
"name": "F1",
"value": "003"
},
{
"name": "F2",
"value": "f37"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
使用预设 SQL 执行查询:如在预设 SQL 中设置了查询信息,可发送需查询的预设 SQL 来执行查询。创建一个名称为 SQL001
的预设 SQL,查询语句示例如下(包含参数用法):
Insert Into Table_Test(FCode,FName) values(:F1,:F2)
呼叫 WebSocket 执行数据库查询的文本示例如下:
{
"action": "execsql",
"db_name": "demo",
"sql_command_id": "SQL001",
"params": [
{
"name": "F1",
"value": "043"
},
{
"name": "F2",
"value": "d23"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15