[*] 日常优化

This commit is contained in:
acgist
2023-06-27 08:31:46 +08:00
parent 0ae5309b62
commit 8245d3446a
4 changed files with 57 additions and 47 deletions

View File

@@ -363,20 +363,17 @@ class Room {
me.transports.forEach(v => v.close());
me.mediasoupRouter.close();
}
}
// TODO:continue
};
/**
* 桃夭
* 桃夭信令
*/
class Taoyao {
// 是否连接
connect = false;
// 房间列表
// 房间列表房间ID=房间
rooms = new Map();
// 回调事件
// 回调事件消息ID=事件
callbackMapping = new Map();
// Worker列表
mediasoupWorkers = [];
@@ -384,6 +381,7 @@ class Taoyao {
nextMediasoupWorkerIndex = 0;
constructor(mediasoupWorkers) {
console.info("加载媒体桃夭信令");
this.mediasoupWorkers = mediasoupWorkers;
// 定时打印使用情况
setInterval(async () => {
@@ -398,29 +396,31 @@ class Taoyao {
*/
on(message) {
const me = this;
// 解构
const { header, body } = message;
const { id, signal } = header;
// 请求回调
if (me.callbackMapping.has(message.header.id)) {
if (me.callbackMapping.has(id)) {
try {
me.callbackMapping.get(message.header.id)(message);
me.callbackMapping.get(id)(message);
} finally {
me.callbackMapping.delete(message.header.id);
me.callbackMapping.delete(id);
}
return;
}
// 执行信令
const body = message.body;
switch (message.header.signal) {
switch (signal) {
case "client::reboot":
me.clientReboot(message, body);
break;
case "client::register":
me.clientRegister(message, body);
break;
case "client::shutdown":
me.clientShutdown(message, body);
break;
case "client::register":
protocol.clientIndex = body.index;
break;
case "media::ice::restart":
me.mediaIceRestart(message, body);
case "control::server::record":
me.controlServerRecord(message, body);
break;
case "media::consume":
me.mediaConsume(message, body);
@@ -467,9 +467,6 @@ class Taoyao {
case "media::producer::resume":
me.mediaProducerResume(message, body);
break;
case "control::server::record":
me.controlServerRecord(message, body);
break;
case "media::router::rtp::capabilities":
me.mediaRouterRtpCapabilities(message, body);
break;
@@ -506,7 +503,7 @@ class Taoyao {
try {
signalChannel.channel.send(JSON.stringify(message));
} catch (error) {
console.error("异步请求异常", message, error);
console.error("异步请求异常", message, error);
}
}
@@ -520,11 +517,18 @@ class Taoyao {
async request(message) {
const me = this;
return new Promise((resolve, reject) => {
let done = false;
// 注册回调
me.callbackMapping.set(message.header.id, (response) => {
const { header, body } = message;
const { id } = header;
// 设置超时
const rejectTimeout = setTimeout(() => {
me.callbackMapping.delete(id);
reject("请求超时", message);
}, 5000);
// 请求回调
me.callbackMapping.set(id, (response) => {
resolve(response);
done = true;
clearTimeout(rejectTimeout);
return true;
});
// 发送消息
try {
@@ -532,16 +536,11 @@ class Taoyao {
} catch (error) {
reject("同步请求异常", error);
}
// 设置超时
setTimeout(() => {
if (!done) {
me.callbackMapping.delete(message.header.id);
reject("请求超时", message);
}
}, 5000);
});
}
// TODO:continue
/**
* 打印日志
*/
@@ -590,6 +589,17 @@ class Taoyao {
// this.push(message);
}
/**
* 终端注册信令
*
* @param {*} message 消息
* @param {*} body 消息主体
*/
clientRegister(message, body) {
protocol.clientIndex = body.index;
console.debug("终端序号", protocol.clientIndex);
}
/**
* 关闭终端信令
*
@@ -1766,6 +1776,6 @@ class Taoyao {
// console.info("mediasoupRouter newrtpobserver", roomId, mediasoupRouter.id, rtpObserver.id);
// });
}
}
};
module.exports = { Taoyao, signalChannel };

View File

@@ -102,7 +102,7 @@ export default {
this.audioStream.addTrack(track);
this.audio.srcObject = this.audioStream;
}
this.audio.play().catch((error) => console.warn("频播放失败", error));
this.audio.play().catch((error) => console.warn("频播放失败", error));
} else if(track.kind === 'video') {
this.videoConsumer = consumer;
if (this.videoStream) {

View File

@@ -99,7 +99,7 @@ export default {
this.audioStream.addTrack(track);
this.audio.srcObject = this.audioStream;
}
this.audio.play().catch((error) => console.warn("频播放失败", error));
this.audio.play().catch((error) => console.warn("频播放失败", error));
} else if(track.kind === 'video') {
if (this.videoStream) {
// TODO资源释放

View File

@@ -601,11 +601,18 @@ class Taoyao extends RemoteClient {
async request(message) {
const me = this;
return new Promise((resolve, reject) => {
let done = false;
const { header, body } = message;
const { id } = header;
// 设置超时
const rejectTimeout = setTimeout(() => {
me.callbackMapping.delete(id);
reject("请求超时", message);
}, 5000);
// 请求回调
me.callbackMapping.set(message.header.id, (response) => {
me.callbackMapping.set(id, (response) => {
resolve(response);
done = true;
clearTimeout(rejectTimeout);
// 默认不用继续处理
return true;
});
// 发送消息
@@ -614,13 +621,6 @@ class Taoyao extends RemoteClient {
} catch (error) {
reject("同步请求异常", error);
}
// 设置超时
setTimeout(() => {
if (!done) {
me.callbackMapping.delete(message.header.id);
reject("请求超时", message);
}
}, 5000);
});
}
/************************ 回调 ************************/
@@ -939,8 +939,8 @@ class Taoyao extends RemoteClient {
* @param {*} message 消息
*/
defaultClientRegister(message) {
const { index } = message.body;
protocol.clientIndex = index;
protocol.clientIndex = message.body.index;
console.debug("终端序号", protocol.clientIndex);
}
/**
* 关闭终端信令