This commit is contained in:
acgist
2022-11-26 12:20:05 +08:00
parent 0f339f4aea
commit 474be08cc9
21 changed files with 493 additions and 362 deletions

View File

@@ -5,6 +5,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.acgist.taoyao.webrtc.mesh.listener.MediaCandidateListener;
import com.acgist.taoyao.webrtc.mesh.listener.MediaPublishListener;
import com.acgist.taoyao.webrtc.mesh.listener.MediaSubscribeListener;
/**
@@ -15,6 +17,12 @@ import com.acgist.taoyao.webrtc.mesh.listener.MediaSubscribeListener;
@Configuration
@ConditionalOnProperty(prefix = "taoyao.webrtc", name = "model", havingValue = "MESH", matchIfMissing = false)
public class MeshAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public MediaPublishListener mediaPublishListener() {
return new MediaPublishListener();
}
@Bean
@ConditionalOnMissingBean
@@ -22,4 +30,10 @@ public class MeshAutoConfiguration {
return new MediaSubscribeListener();
}
@Bean
@ConditionalOnMissingBean
public MediaCandidateListener mediaCandidateListener() {
return new MediaCandidateListener();
}
}

View File

@@ -0,0 +1,32 @@
package com.acgist.taoyao.webrtc.mesh.listener;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections4.CollectionUtils;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.event.media.MediaCandidateEvent;
import com.acgist.taoyao.signal.listener.MediaListenerAdapter;
/**
* 候选监听
*
* @author acgist
*/
public class MediaCandidateListener extends MediaListenerAdapter<MediaCandidateEvent> {
@Override
public void onApplicationEvent(MediaCandidateEvent event) {
final String sn = event.getSn();
final List<String> sns = event.getSns();
if(CollectionUtils.isEmpty(sns)) {
return;
}
final Message message = event.getMessage();
final Map<String, Object> mergeBody = event.mergeBody();
mergeBody.put("from", sn);
sns.forEach(to -> this.clientSessionManager.unicast(to, message));
}
}

View File

@@ -0,0 +1,26 @@
package com.acgist.taoyao.webrtc.mesh.listener;
import java.util.Map;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.event.media.MediaPublishEvent;
import com.acgist.taoyao.signal.listener.MediaListenerAdapter;
/**
* 发布监听
*
* @author acgist
*/
public class MediaPublishListener extends MediaListenerAdapter<MediaPublishEvent> {
@Override
public void onApplicationEvent(MediaPublishEvent event) {
final String sn = event.getSn();
final String to = event.getTo();
final Message message = event.getMessage();
final Map<String, Object> mergeBody = event.mergeBody();
mergeBody.put("from", sn);
this.clientSessionManager.unicast(to, message);
}
}

View File

@@ -1,10 +1,13 @@
package com.acgist.taoyao.webrtc.mesh.listener;
import java.util.Map;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.event.media.MediaSubscribeEvent;
import com.acgist.taoyao.signal.listener.MediaListenerAdapter;
/**
* 媒体订阅监听
* 订阅监听
*
* @author acgist
*/
@@ -12,7 +15,12 @@ public class MediaSubscribeListener extends MediaListenerAdapter<MediaSubscribeE
@Override
public void onApplicationEvent(MediaSubscribeEvent event) {
final String sn = event.getSn();
final String to = event.getTo();
final Message message = event.getMessage();
final Map<String, Object> mergeBody = event.mergeBody();
mergeBody.put("from", sn);
this.clientSessionManager.unicast(to, message);
}
}