[*] 日常优化
This commit is contained in:
@@ -789,6 +789,15 @@ class Taoyao extends RemoteClient {
|
|||||||
case "client::shutdown":
|
case "client::shutdown":
|
||||||
me.defaultClientShutdown(message);
|
me.defaultClientShutdown(message);
|
||||||
break;
|
break;
|
||||||
|
case "client::unicast":
|
||||||
|
me.defaultClientUnicast(message);
|
||||||
|
break;
|
||||||
|
case "control::bell":
|
||||||
|
me.defaultControlBell(message);
|
||||||
|
break;
|
||||||
|
case "control::wakeup":
|
||||||
|
me.defaultControlWakeup(message);
|
||||||
|
break;
|
||||||
case "media::audio::volume":
|
case "media::audio::volume":
|
||||||
me.defaultMediaAudioVolume(message);
|
me.defaultMediaAudioVolume(message);
|
||||||
break;
|
break;
|
||||||
@@ -1175,6 +1184,86 @@ class Taoyao extends RemoteClient {
|
|||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端状态信令
|
||||||
|
*
|
||||||
|
* @param {*} clientId 终端ID
|
||||||
|
*
|
||||||
|
* @returns 终端状态
|
||||||
|
*/
|
||||||
|
async clientStatus(clientId) {
|
||||||
|
const response = await this.request(protocol.buildMessage("client::status", {
|
||||||
|
clientId
|
||||||
|
}));
|
||||||
|
return response.body;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端单播信令
|
||||||
|
*
|
||||||
|
* @param {*} clientId 接收终端ID
|
||||||
|
* @param {*} message 消息内容
|
||||||
|
*/
|
||||||
|
clientUnicast(clientId, message) {
|
||||||
|
this.push(protocol.buildMessage("client::unicast", {
|
||||||
|
...message,
|
||||||
|
to: clientId
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端单播信令
|
||||||
|
*
|
||||||
|
* @param {*} message 信令消息
|
||||||
|
*/
|
||||||
|
defaultClientUnicast(message) {
|
||||||
|
console.debug("终端单播消息", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 响铃信令
|
||||||
|
*
|
||||||
|
* @param {*} clientId 目标终端ID
|
||||||
|
* @param {*} enabled 是否响铃
|
||||||
|
*/
|
||||||
|
ControlBell(clientId, enabled) {
|
||||||
|
this.request(protocol.buildMessage("control::bell", {
|
||||||
|
enabled,
|
||||||
|
to: clientId,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 响铃信令
|
||||||
|
*
|
||||||
|
* @param {*} message 信令消息
|
||||||
|
*/
|
||||||
|
defaultControlBell(message) {
|
||||||
|
console.debug("响铃", message);
|
||||||
|
this.push(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端唤醒信令
|
||||||
|
*
|
||||||
|
* @param {*} clientId 目标终端ID
|
||||||
|
*/
|
||||||
|
controlWakeup(clientId) {
|
||||||
|
this.request(protocol.buildMessage("control::wakeup", {
|
||||||
|
to: clientId
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端唤醒信令
|
||||||
|
*
|
||||||
|
* @param {*} message 信令消息
|
||||||
|
*/
|
||||||
|
defaultControlWakeup(message) {
|
||||||
|
console.debug("终端唤醒", message);
|
||||||
|
this.push(message);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拍照
|
* 拍照
|
||||||
*
|
*
|
||||||
@@ -2151,18 +2240,6 @@ class Taoyao extends RemoteClient {
|
|||||||
return response.body;
|
return response.body;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {*} clientId 终端ID
|
|
||||||
*
|
|
||||||
* @returns 终端状态
|
|
||||||
*/
|
|
||||||
async clientStatus(clientId) {
|
|
||||||
const response = await this.request(
|
|
||||||
protocol.buildMessage("client::status", { clientId })
|
|
||||||
);
|
|
||||||
return response.body;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生产媒体
|
* 生产媒体
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import com.acgist.taoyao.signal.protocol.control.IControlConfigAudioProtocol;
|
|||||||
import com.acgist.taoyao.signal.protocol.control.IControlConfigVideoProtocol;
|
import com.acgist.taoyao.signal.protocol.control.IControlConfigVideoProtocol;
|
||||||
import com.acgist.taoyao.signal.protocol.control.IControlPhotographProtocol;
|
import com.acgist.taoyao.signal.protocol.control.IControlPhotographProtocol;
|
||||||
import com.acgist.taoyao.signal.protocol.control.IControlServerRecordProtocol;
|
import com.acgist.taoyao.signal.protocol.control.IControlServerRecordProtocol;
|
||||||
|
import com.acgist.taoyao.signal.protocol.control.IControlWakeupProtocol;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
||||||
@@ -36,6 +37,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
public class ControlController {
|
public class ControlController {
|
||||||
|
|
||||||
private final IControlBellProtocol controlBellProtocol;
|
private final IControlBellProtocol controlBellProtocol;
|
||||||
|
private final IControlWakeupProtocol controlWakeupProtocol;
|
||||||
private final IControlPhotographProtocol controlPhotographProtocol;
|
private final IControlPhotographProtocol controlPhotographProtocol;
|
||||||
private final IControlConfigAudioProtocol controlConfigAudioProtocol;
|
private final IControlConfigAudioProtocol controlConfigAudioProtocol;
|
||||||
private final IControlConfigVideoProtocol controlConfigVideoProtocol;
|
private final IControlConfigVideoProtocol controlConfigVideoProtocol;
|
||||||
@@ -94,4 +96,10 @@ public class ControlController {
|
|||||||
return this.controlServerRecordProtocol.execute(roomId, clientId, enabled);
|
return this.controlServerRecordProtocol.execute(roomId, clientId, enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "唤醒终端", description = "唤醒终端")
|
||||||
|
@GetMapping("/wakeup/{clientId}")
|
||||||
|
public Message wakeup(@PathVariable String clientId) {
|
||||||
|
return this.controlWakeupProtocol.execute(clientId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import com.acgist.taoyao.signal.client.ClientManager;
|
|||||||
import com.acgist.taoyao.signal.client.ClientStatus;
|
import com.acgist.taoyao.signal.client.ClientStatus;
|
||||||
import com.acgist.taoyao.signal.protocol.client.ClientRebootProtocol;
|
import com.acgist.taoyao.signal.protocol.client.ClientRebootProtocol;
|
||||||
import com.acgist.taoyao.signal.protocol.client.ClientShutdownProtocol;
|
import com.acgist.taoyao.signal.protocol.client.ClientShutdownProtocol;
|
||||||
import com.acgist.taoyao.signal.protocol.client.ClientWakeupProtocol;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.media.Content;
|
import io.swagger.v3.oas.annotations.media.Content;
|
||||||
@@ -31,7 +30,6 @@ import lombok.RequiredArgsConstructor;
|
|||||||
public class ClientController {
|
public class ClientController {
|
||||||
|
|
||||||
private final ClientManager clientManager;
|
private final ClientManager clientManager;
|
||||||
private final ClientWakeupProtocol clientWakeupProtocol;
|
|
||||||
private final ClientRebootProtocol clientRebootProtocol;
|
private final ClientRebootProtocol clientRebootProtocol;
|
||||||
private final ClientShutdownProtocol clientShutdownProtocol;
|
private final ClientShutdownProtocol clientShutdownProtocol;
|
||||||
|
|
||||||
@@ -49,13 +47,6 @@ public class ClientController {
|
|||||||
return Message.success(this.clientManager.getStatus(clientId));
|
return Message.success(this.clientManager.getStatus(clientId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "唤醒终端", description = "唤醒终端")
|
|
||||||
@GetMapping("/wakeup/{clientId}")
|
|
||||||
public Message wakeup(@PathVariable String clientId) {
|
|
||||||
this.clientWakeupProtocol.execute(clientId);
|
|
||||||
return Message.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "重启终端", description = "重启终端")
|
@Operation(summary = "重启终端", description = "重启终端")
|
||||||
@GetMapping("/reboot/{clientId}")
|
@GetMapping("/reboot/{clientId}")
|
||||||
public Message reboot(@PathVariable String clientId) {
|
public Message reboot(@PathVariable String clientId) {
|
||||||
|
|||||||
@@ -38,9 +38,11 @@ public abstract class OperatorAdapter implements Operator {
|
|||||||
* @return 是否已经关闭
|
* @return 是否已经关闭
|
||||||
*/
|
*/
|
||||||
protected boolean markClose() {
|
protected boolean markClose() {
|
||||||
|
synchronized (this) {
|
||||||
final boolean old = this.close;
|
final boolean old = this.close;
|
||||||
this.close = true;
|
this.close = true;
|
||||||
return old;
|
return old;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,27 +27,27 @@ import com.acgist.taoyao.signal.protocol.ProtocolClientAdapter;
|
|||||||
""",
|
""",
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"ip": "终端IP",
|
"ip" : "终端IP",
|
||||||
"name": "终端名称",
|
"name" : "终端名称",
|
||||||
"clientId": "终端ID",
|
"clientId" : "终端ID",
|
||||||
"clientType": "终端类型",
|
"clientType" : "终端类型",
|
||||||
"latitude": 纬度,
|
"latitude" : 纬度,
|
||||||
"longitude": 经度,
|
"longitude" : 经度,
|
||||||
"humidity": 湿度,
|
"humidity" : 湿度,
|
||||||
"temperature": 温度,
|
"temperature" : 温度,
|
||||||
"signal": 信号强度(0~100),
|
"signal" : 信号强度(0~100),
|
||||||
"battery": 电池电量(0~100),
|
"battery" : 电池电量(0~100),
|
||||||
"alarming": 是否发生告警(true|false),
|
"alarming" : 是否发生告警(true|false),
|
||||||
"charging": 是否正在充电(true|false),
|
"charging" : 是否正在充电(true|false),
|
||||||
"clientRecording": 是否正在录像(true|false),
|
"clientRecording": 是否正在录像(true|false),
|
||||||
"serverRecording": 是否正在录像(true|false),
|
"serverRecording": 是否正在录像(true|false),
|
||||||
"lastHeartbeat": "最后心跳时间",
|
"lastHeartbeat" : "最后心跳时间",
|
||||||
"status": {更多状态},
|
"status" : {更多状态},
|
||||||
"config": {更多配置}
|
"config" : {更多配置}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
},
|
},
|
||||||
flow = "终端->信令服务->终端"
|
flow = "终端=>信令服务->终端"
|
||||||
)
|
)
|
||||||
public class ClientStatusProtocol extends ProtocolClientAdapter {
|
public class ClientStatusProtocol extends ProtocolClientAdapter {
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.client;
|
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.annotation.Description;
|
|
||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
|
||||||
import com.acgist.taoyao.signal.protocol.ProtocolClientAdapter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 终端唤醒信令
|
|
||||||
*
|
|
||||||
* @author acgist
|
|
||||||
*/
|
|
||||||
@Protocol
|
|
||||||
@Description(
|
|
||||||
flow = "信令服务->终端"
|
|
||||||
)
|
|
||||||
public class ClientWakeupProtocol extends ProtocolClientAdapter {
|
|
||||||
|
|
||||||
private static final String SIGNAL = "client::wakeup";
|
|
||||||
|
|
||||||
public ClientWakeupProtocol() {
|
|
||||||
super("终端唤醒信令", SIGNAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param clientId 终端ID
|
|
||||||
*/
|
|
||||||
public void execute(String clientId) {
|
|
||||||
this.clientManager.unicast(clientId, this.build());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -19,13 +19,13 @@ import com.acgist.taoyao.signal.protocol.ProtocolControlAdapter;
|
|||||||
@Description(
|
@Description(
|
||||||
body = """
|
body = """
|
||||||
{
|
{
|
||||||
"to": "目标终端ID",
|
"to" : "目标终端ID",
|
||||||
"enabled": 是否响铃(true|false)
|
"enabled": 是否响铃(true|false)
|
||||||
}
|
}
|
||||||
""",
|
""",
|
||||||
flow = {
|
flow = {
|
||||||
"信令服务->终端",
|
"信令服务=>终端",
|
||||||
"终端->信令服务->终端"
|
"终端=>信令服务->终端"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
public class ControlBellProtocol extends ProtocolControlAdapter implements IControlBellProtocol {
|
public class ControlBellProtocol extends ProtocolControlAdapter implements IControlBellProtocol {
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package com.acgist.taoyao.signal.protocol.control;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.acgist.taoyao.boot.annotation.Description;
|
||||||
|
import com.acgist.taoyao.boot.annotation.Protocol;
|
||||||
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
import com.acgist.taoyao.signal.client.Client;
|
||||||
|
import com.acgist.taoyao.signal.client.ClientType;
|
||||||
|
import com.acgist.taoyao.signal.protocol.ProtocolControlAdapter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端唤醒信令
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
@Protocol
|
||||||
|
@Description(
|
||||||
|
body = """
|
||||||
|
{
|
||||||
|
"to": "目标终端ID"
|
||||||
|
}
|
||||||
|
""",
|
||||||
|
flow = {
|
||||||
|
"信令服务=>终端",
|
||||||
|
"终端=>信令服务->终端"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
public class ControlWakeupProtocol extends ProtocolControlAdapter implements IControlWakeupProtocol {
|
||||||
|
|
||||||
|
private static final String SIGNAL = "control::wakeup";
|
||||||
|
|
||||||
|
public ControlWakeupProtocol() {
|
||||||
|
super("终端唤醒信令", SIGNAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(String clientId, ClientType clientType, Client client, Client targetClient, Message message, Map<String, Object> body) {
|
||||||
|
client.push(targetClient.request(message));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Message execute(String clientId) {
|
||||||
|
return this.request(clientId, this.build(Map.of()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.acgist.taoyao.signal.protocol.control;
|
||||||
|
|
||||||
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端唤醒信令接口
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
public interface IControlWakeupProtocol {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param clientId 终端ID
|
||||||
|
*
|
||||||
|
* @return 执行结果
|
||||||
|
*/
|
||||||
|
Message execute(String clientId);
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user