[*] 会话控制

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

@@ -121,6 +121,14 @@ public interface Constant {
* 媒体类型 * 媒体类型
*/ */
String KIND = "kind"; String KIND = "kind";
/**
* 声音
*/
String AUDIO = "audio";
/**
* 视频
*/
String VIDEO = "video";
/** /**
* 索引 * 索引
*/ */

View File

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