[*] 会议

This commit is contained in:
acgist
2022-11-20 14:10:20 +08:00
parent f900bbb998
commit cf476b842b
14 changed files with 274 additions and 70 deletions

View File

@@ -39,6 +39,9 @@ public class Meeting {
*/
public void addSn(String sn) {
synchronized (this.sns) {
if(this.sns.contains(sn)) {
return;
}
this.sns.add(sn);
}
}

View File

@@ -9,7 +9,6 @@ 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;
@@ -23,8 +22,6 @@ public class MeetingCreateListener extends ApplicationListenerAdapter<MeetingCre
@Autowired
private MeetingManager meetingManager;
@Autowired
private ClientSessionManager clientSessionManager;
@Override
public void onApplicationEvent(MeetingCreateEvent event) {
@@ -32,7 +29,6 @@ public class MeetingCreateListener extends ApplicationListenerAdapter<MeetingCre
final Meeting meeting = this.meetingManager.create(session.sn());
final Message message = event.getMessage();
message.setBody(Map.of("id", meeting.getId()));
// 广播不改ID触发创建终端事件回调
this.clientSessionManager.broadcast(message);
}

View File

@@ -0,0 +1,42 @@
package com.acgist.taoyao.meeting.listener;
import java.util.Map;
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.event.meeting.MeetingEnterEvent;
import com.acgist.taoyao.signal.listener.ApplicationListenerAdapter;
/**
* 进入会议监听
*
* @author acgist
*/
@Component
public class MeetingEnterListener extends ApplicationListenerAdapter<MeetingEnterEvent> {
@Autowired
private MeetingManager meetingManager;
@Override
public void onApplicationEvent(MeetingEnterEvent event) {
final Map<?, ?> body = event.getBody();
final ClientSession session = event.getSession();
final String sn = session.sn();
final String id = (String) body.get("id");
final Meeting meeting = this.meetingManager.meeting(id);
meeting.addSn(sn);
final Message message = event.getMessage();
message.setBody(Map.of(
"id", meeting.getId(),
"sn", sn
));
this.clientSessionManager.broadcast(sn, message);
}
}