This commit is contained in:
acgist
2022-11-19 23:41:55 +08:00
parent 7b5e41ff5a
commit f5bfe2cef9
9 changed files with 249 additions and 107 deletions

View File

@@ -26,5 +26,21 @@ public class Meeting {
*/
@Schema(title = "终端会话标识列表", description = "终端会话标识列表")
private List<String> sns;
/**
* 创建终端标识
*/
@Schema(title = "创建终端标识", description = "创建终端标识")
private String creator;
/**
* 新增终端会话标识
*
* @param sn 终端会话标识
*/
public void addSn(String sn) {
synchronized (this.sns) {
this.sns.add(sn);
}
}
}

View File

@@ -3,8 +3,11 @@ package com.acgist.taoyao.meeting;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.acgist.taoyao.boot.service.IdService;
import lombok.extern.slf4j.Slf4j;
/**
@@ -16,6 +19,9 @@ import lombok.extern.slf4j.Slf4j;
@Service
public class MeetingManager {
@Autowired
private IdService idService;
/**
* 会议列表
*/
@@ -49,5 +55,23 @@ public class MeetingManager {
final Meeting meeting = this.meeting(id);
return meeting == null ? List.of() : meeting.getSns();
}
/**
* 创建会议
*
* @param sn 创建会议终端标识
*
* @return 会议信息
*/
public Meeting create(String sn) {
final Meeting meeting = new Meeting();
meeting.setId(this.idService.buildIdToString());
meeting.setSns(new CopyOnWriteArrayList<>());
meeting.setCreator(sn);
meeting.addSn(sn);
this.meetings.add(meeting);
log.info("创建会议:{}", meeting.getId());
return meeting;
}
}

View File

@@ -6,32 +6,34 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.meeting.Meeting;
import com.acgist.taoyao.meeting.MeetingManager;
import com.acgist.taoyao.signal.client.ClientSession;
import com.acgist.taoyao.signal.client.ClientSessionManager;
import com.acgist.taoyao.signal.event.meeting.MeetingCreateEvent;
import com.acgist.taoyao.signal.listener.ApplicationListenerAdapter;
import lombok.extern.slf4j.Slf4j;
/**
* 创建会议监听
*
* @author acgist
*/
@Slf4j
@Component
public class MeetingCreateListener extends ApplicationListenerAdapter<MeetingCreateEvent> {
@Autowired
private MeetingManager meetingManager;
@Autowired
private ClientSessionManager clientSessionManager;
@Override
public void onApplicationEvent(MeetingCreateEvent event) {
// this.meetingManager.create();
final ClientSession session = event.getSession();
final Meeting meeting = this.meetingManager.create(session.sn());
final Message message = event.getMessage();
message.setBody(Map.of("id", "1234"));
session.push(message);
message.setBody(Map.of("id", meeting.getId()));
// 广播不改ID触发创建终端事件回调
this.clientSessionManager.broadcast(message);
}
}