[*] 会话控制

This commit is contained in:
acgist
2023-04-02 20:17:53 +08:00
parent ed2410ac64
commit efe3f2add2
4 changed files with 96 additions and 2 deletions

View File

@@ -21,7 +21,9 @@ import com.acgist.taoyao.signal.protocol.ProtocolSessionAdapter;
@Description(
body = """
{
"clientId": "接收者ID"
"clientId": "接收者ID",
"audio" : 是否需要声音true|false
"video" : 是否需要视频true|false
}
""",
flow = {
@@ -52,7 +54,9 @@ public class SessionCallProtocol extends ProtocolSessionAdapter {
callMessage.setBody(Map.of(
Constant.NAME, client.status().getName(),
Constant.CLIENT_ID, client.clientId(),
Constant.SESSION_ID, session.getId()
Constant.SESSION_ID, session.getId(),
Constant.AUDIO, MapUtils.get(body, Constant.AUDIO),
Constant.VIDEO, MapUtils.get(body, Constant.VIDEO)
));
target.push(callMessage);
}

View File

@@ -0,0 +1,41 @@
package com.acgist.taoyao.signal.protocol.session;
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.party.session.Session;
import com.acgist.taoyao.signal.protocol.ProtocolSessionAdapter;
/**
* 暂停媒体信令
*
* @author acgist
*/
@Protocol
@Description(
body = """
{
"sessionId": "会话ID",
"type" : "媒体类型audio|voice"
}
""",
flow = "终端->信令服务->终端"
)
public class SessionPauseProtocol extends ProtocolSessionAdapter {
public static final String SIGNAL = "session::pause";
public SessionPauseProtocol() {
super("暂停媒体信令", SIGNAL);
}
@Override
public void execute(String clientId, ClientType clientType, Session session, Client client, Message message, Map<String, Object> body) {
session.pushRemote(clientId, message);
}
}

View File

@@ -0,0 +1,41 @@
package com.acgist.taoyao.signal.protocol.session;
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.party.session.Session;
import com.acgist.taoyao.signal.protocol.ProtocolSessionAdapter;
/**
* 恢复媒体信令
*
* @author acgist
*/
@Protocol
@Description(
body = """
{
"sessionId": "会话ID",
"type" : "媒体类型audio|voice"
}
""",
flow = "终端->信令服务->终端"
)
public class SessionResumeProtocol extends ProtocolSessionAdapter {
public static final String SIGNAL = "session::resume";
public SessionResumeProtocol() {
super("恢复媒体信令", SIGNAL);
}
@Override
public void execute(String clientId, ClientType clientType, Session session, Client client, Message message, Map<String, Object> body) {
session.pushRemote(clientId, message);
}
}