[+] 定义事件
This commit is contained in:
@@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
```
|
```
|
||||||
sudo npm install
|
sudo npm install
|
||||||
|
|
||||||
# 跳过mediasoup
|
|
||||||
npm install --skip=mediasoup
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Mediasoup
|
## Mediasoup
|
||||||
|
|||||||
@@ -190,7 +190,6 @@ async function onmessage(message, session) {
|
|||||||
data.message = "授权失败";
|
data.message = "授权失败";
|
||||||
session.send(JSON.stringify(data));
|
session.send(JSON.stringify(data));
|
||||||
}
|
}
|
||||||
// 不要传递授权信息
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 处理信令
|
// 处理信令
|
||||||
|
|||||||
@@ -29,6 +29,8 @@
|
|||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
| taoyao-signal |
|
| taoyao-signal |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
| taoyao-node |
|
||||||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
| taoyao-boot |
|
| taoyao-boot |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
### 终端
|
### 终端
|
||||||
|
|
||||||
#### 授权信息
|
#### 授权信息(6000)
|
||||||
|
|
||||||
```
|
```
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -59,6 +59,15 @@ public class MediasoupClient {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private AuthorizeProtocol authorizeProtocol;
|
private AuthorizeProtocol authorizeProtocol;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最大重试次数
|
||||||
|
*/
|
||||||
|
private static final int MAX_RETRY = 12;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重试次数
|
||||||
|
*/
|
||||||
|
private int retry = 1;
|
||||||
/**
|
/**
|
||||||
* Mediasoup WebSocket通道
|
* Mediasoup WebSocket通道
|
||||||
*/
|
*/
|
||||||
@@ -95,7 +104,10 @@ public class MediasoupClient {
|
|||||||
.get();
|
.get();
|
||||||
} catch (InterruptedException | ExecutionException e) {
|
} catch (InterruptedException | ExecutionException e) {
|
||||||
log.error("连接Mediasoup异常:{}", uri, e);
|
log.error("连接Mediasoup异常:{}", uri, e);
|
||||||
this.taskSchedulerl.schedule(this::buildClient, Instant.now().plusSeconds(5));
|
this.taskSchedulerl.schedule(
|
||||||
|
this::buildClient,
|
||||||
|
Instant.now().plusSeconds(Math.min(this.retry++, MAX_RETRY) * 5)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,6 +193,8 @@ public class MediasoupClient {
|
|||||||
if(MediasoupClient.this.webSocket != null && !(MediasoupClient.this.webSocket.isInputClosed() && MediasoupClient.this.webSocket.isOutputClosed())) {
|
if(MediasoupClient.this.webSocket != null && !(MediasoupClient.this.webSocket.isInputClosed() && MediasoupClient.this.webSocket.isOutputClosed())) {
|
||||||
MediasoupClient.this.webSocket.abort();
|
MediasoupClient.this.webSocket.abort();
|
||||||
}
|
}
|
||||||
|
// 重置重试次数
|
||||||
|
MediasoupClient.this.retry = 1;
|
||||||
// 设置新的通道
|
// 设置新的通道
|
||||||
MediasoupClient.this.webSocket = webSocket;
|
MediasoupClient.this.webSocket = webSocket;
|
||||||
// 发送授权消息
|
// 发送授权消息
|
||||||
@@ -206,7 +220,10 @@ public class MediasoupClient {
|
|||||||
try {
|
try {
|
||||||
return Listener.super.onClose(webSocket, statusCode, reason);
|
return Listener.super.onClose(webSocket, statusCode, reason);
|
||||||
} finally {
|
} finally {
|
||||||
MediasoupClient.this.taskSchedulerl.schedule(MediasoupClient.this::buildClient, Instant.now().plusSeconds(5));
|
MediasoupClient.this.taskSchedulerl.schedule(
|
||||||
|
MediasoupClient.this::buildClient,
|
||||||
|
Instant.now().plusSeconds(Math.min(MediasoupClient.this.retry++, MAX_RETRY) * 5)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,7 +233,10 @@ public class MediasoupClient {
|
|||||||
try {
|
try {
|
||||||
Listener.super.onError(webSocket, error);
|
Listener.super.onError(webSocket, error);
|
||||||
} finally {
|
} finally {
|
||||||
MediasoupClient.this.taskSchedulerl.schedule(MediasoupClient.this::buildClient, Instant.now().plusSeconds(5));
|
MediasoupClient.this.taskSchedulerl.schedule(
|
||||||
|
MediasoupClient.this::buildClient,
|
||||||
|
Instant.now().plusSeconds(Math.min(MediasoupClient.this.retry++, MAX_RETRY) * 5)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class ApplyNetworkThrottleProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class ChangeDisplayNameProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class CloseProducerProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class ConnectWebRtcTransportProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class CreateWebRtcTransportProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class GetConsumerStatsProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class GetDataConsumerStatsProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class GetDataProducerStatsProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class GetProducerStatsProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class GetTransportStatsProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class NewPeerProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class PauseConsumerProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class PauseProducerProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class ProduceDataProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class ProduceProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class ProducerScoreProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class RequestConsumerKeyFrameProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class ResetNetworkThrottleProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class RestartIceProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class ResumeConsumerProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class ResumeProducerProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class SetConsumerPreferredLayersProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class SetConsumerPriorityProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.acgist.taoyao.mediasoup.protocol.media;
|
||||||
|
|
||||||
|
public class VideoorientationchangeProtocol {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
|
||||||
import com.acgist.taoyao.signal.client.ClientSession;
|
|
||||||
import com.acgist.taoyao.signal.event.media.MediaAnswerEvent;
|
|
||||||
import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Answer信令
|
|
||||||
*
|
|
||||||
* @author acgist
|
|
||||||
*/
|
|
||||||
@Protocol
|
|
||||||
public class MediaAnswerProtocol extends ProtocolMapAdapter {
|
|
||||||
|
|
||||||
public static final Integer PID = 5998;
|
|
||||||
|
|
||||||
public MediaAnswerProtocol() {
|
|
||||||
super(PID, "Answer信令");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(String sn, Map<?, ?> body, Message message, ClientSession session) {
|
|
||||||
this.publishEvent(new MediaAnswerEvent(sn, body, message, session));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
|
||||||
import com.acgist.taoyao.signal.client.ClientSession;
|
|
||||||
import com.acgist.taoyao.signal.event.media.MediaCandidateEvent;
|
|
||||||
import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 候选信令
|
|
||||||
*
|
|
||||||
* @author acgist
|
|
||||||
*/
|
|
||||||
@Protocol
|
|
||||||
public class MediaCandidateProtocol extends ProtocolMapAdapter {
|
|
||||||
|
|
||||||
public static final Integer PID = 5999;
|
|
||||||
|
|
||||||
public MediaCandidateProtocol() {
|
|
||||||
super(PID, "候选信令");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(String sn, Map<?, ?> body, Message message, ClientSession session) {
|
|
||||||
this.publishEvent(new MediaCandidateEvent(sn, body, message, session));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
|
||||||
import com.acgist.taoyao.signal.client.ClientSession;
|
|
||||||
import com.acgist.taoyao.signal.event.media.MediaOfferEvent;
|
|
||||||
import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Offer信令
|
|
||||||
*
|
|
||||||
* @author acgist
|
|
||||||
*/
|
|
||||||
@Protocol
|
|
||||||
public class MediaOfferProtocol extends ProtocolMapAdapter {
|
|
||||||
|
|
||||||
public static final Integer PID = 5997;
|
|
||||||
|
|
||||||
public MediaOfferProtocol() {
|
|
||||||
super(PID, "Offer信令");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(String sn, Map<?, ?> body, Message message, ClientSession session) {
|
|
||||||
this.publishEvent(new MediaOfferEvent(sn, body, message, session));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
public class MediaPauseProtocol {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
|
||||||
import com.acgist.taoyao.signal.client.ClientSession;
|
|
||||||
import com.acgist.taoyao.signal.event.media.MediaPublishEvent;
|
|
||||||
import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发布信令
|
|
||||||
*
|
|
||||||
* @author acgist
|
|
||||||
*/
|
|
||||||
@Protocol
|
|
||||||
public class MediaPublishProtocol extends ProtocolMapAdapter {
|
|
||||||
|
|
||||||
public static final Integer PID = 5000;
|
|
||||||
|
|
||||||
public MediaPublishProtocol() {
|
|
||||||
super(PID, "发布信令");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(String sn, Map<?, ?> body, Message message, ClientSession session) {
|
|
||||||
this.publishEvent(new MediaPublishEvent(sn, body, message, session));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
public class MediaResumeProtocol {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
public class MediaStartRecordProtocol {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
public class MediaStopRecordProtocol {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
|
||||||
import com.acgist.taoyao.signal.client.ClientSession;
|
|
||||||
import com.acgist.taoyao.signal.event.media.MediaSubscribeEvent;
|
|
||||||
import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订阅指令
|
|
||||||
*
|
|
||||||
* @author acgist
|
|
||||||
*/
|
|
||||||
@Protocol
|
|
||||||
public class MediaSubscribeProtocol extends ProtocolMapAdapter {
|
|
||||||
|
|
||||||
public static final Integer PID = 5002;
|
|
||||||
|
|
||||||
public MediaSubscribeProtocol() {
|
|
||||||
super(PID, "订阅指令");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(String sn, Map<?, ?> body, Message message, ClientSession session) {
|
|
||||||
this.publishEvent(new MediaSubscribeEvent(sn, body, message, session));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
public class MediaUnpublishProtocol {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.protocol.media;
|
|
||||||
|
|
||||||
public class MediaUnsubscribeProtocol {
|
|
||||||
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user