[*] 日常优化

This commit is contained in:
acgist
2023-08-29 08:09:25 +08:00
parent 9d2c183fcc
commit d11e8e058e
3 changed files with 79 additions and 41 deletions

View File

@@ -480,7 +480,7 @@ class RemoteClient {
/**
* 关闭媒体
*/
close() {
async close() {
const me = this;
if(me.closed) {
return;
@@ -488,23 +488,23 @@ class RemoteClient {
console.debug("关闭终端", me.clientId);
me.closed = true;
if(me.audioTrack) {
me.audioTrack.stop();
await me.audioTrack.stop();
me.audioTrack = null;
}
if(me.videoTrack) {
me.videoTrack.stop();
await me.videoTrack.stop();
me.videoTrack = null;
}
if(me.dataConsumer) {
me.dataConsumer.close();
await me.dataConsumer.close();
me.dataConsumer = null;
}
if(me.audioConsumer) {
me.audioConsumer.close();
await me.audioConsumer.close();
me.audioConsumer = null;
}
if(me.videoConsumer) {
me.videoConsumer.close();
await me.videoConsumer.close();
me.videoConsumer = null;
}
}
@@ -882,6 +882,9 @@ class Taoyao extends RemoteClient {
case "room::close":
me.defaultRoomClose(message);
break;
case "room::create":
this.defaultRoomCreate(message);
break;
case "room::enter":
me.defaultRoomEnter(message);
break;
@@ -2328,20 +2331,6 @@ class Taoyao extends RemoteClient {
me.closeRoomMedia();
}
/**
* 创建房间信令
*
* @param {*} room 房间
*
* @returns 房间
*/
async roomCreate(room) {
const me = this;
console.debug("创建房间", room);
const response = await me.request(protocol.buildMessage("room::create", room));
return response.body;
}
/**
* 媒体回调
*
@@ -2885,6 +2874,47 @@ class Taoyao extends RemoteClient {
}
}
/**
* 创建房间信令
*
* @param {*} room 房间信息
*
* @returns 响应消息
*/
async roomCreate(room) {
if(this.roomId) {
this.callbackError("终端已经进入房间");
return {
code : 9999,
message: "终端已经进入房间"
};
}
console.debug("创建房间", room);
const response = await this.request(protocol.buildMessage("room::create", {
...room
}));
return response.body;
}
/**
* 创建房间信令
* 用于房间重建
*
* @param {*} message 信令消息
*/
async defaultRoomCreate(message) {
console.debug("创建房间", message);
const {
roomId,
password
} = message.body;
if(this.roomId && roomId === this.roomId) {
await this.roomLeave();
await this.roomEnter(roomId, password);
await this.mediaProduce();
}
}
/**
* 进入房间信令
*
@@ -2927,6 +2957,7 @@ class Taoyao extends RemoteClient {
/**
* 进入房间信令
* 其他终端进入房间
*
* @param {*} message 信令消息
*/
@@ -2965,7 +2996,7 @@ class Taoyao extends RemoteClient {
*/
async defaultRoomExpel(message) {
console.debug("收到提出房间信令", message);
this.roomLeave();
await this.roomLeave();
}
/**
@@ -3004,11 +3035,11 @@ class Taoyao extends RemoteClient {
/**
* 离开房间信令
*/
roomLeave() {
async roomLeave() {
this.push(protocol.buildMessage("room::leave", {
roomId: this.roomId
}));
this.closeRoomMedia();
await this.closeRoomMedia();
}
/**
@@ -3563,41 +3594,41 @@ class Taoyao extends RemoteClient {
/**
* 关闭视频房间媒体
*/
closeRoomMedia() {
async closeRoomMedia() {
console.debug("关闭视频房间媒体");
const me = this;
me.roomId = null;
me.close();
await me.close();
if (me.sendTransport) {
me.sendTransport.close();
await me.sendTransport.close();
me.sendTransport = null;
}
if (me.recvTransport) {
me.recvTransport.close();
await me.recvTransport.close();
me.recvTransport = null;
}
if(me.dataProducer) {
me.dataProducer.close();
await me.dataProducer.close();
me.dataProducer = null;
}
if(me.audioProducer) {
me.audioProducer.close();
await me.audioProducer.close();
me.audioProducer = null;
}
if(me.videoProducer) {
me.videoProducer.close();
await me.videoProducer.close();
me.videoProducer = null;
}
me.consumers.forEach((consumer, consumerId) => {
consumer.close();
me.consumers.forEach(async (consumer, consumerId) => {
await consumer.close();
});
me.consumers.clear();
me.dataConsumers.forEach((dataConsumer, consumerId) => {
dataConsumer.close();
me.dataConsumers.forEach(async (dataConsumer, consumerId) => {
await dataConsumer.close();
});
me.dataConsumers.clear();
me.remoteClients.forEach((client, clientId) => {
client.close();
me.remoteClients.forEach(async (client, clientId) => {
await client.close();
});
me.remoteClients.clear();
}