fetchPeers / Peer count
This commit is contained in:
parent
38cc4ab073
commit
df792f40cd
|
@ -0,0 +1 @@
|
|||
# Please fill in the URLrewrite rules or custom Apache config here
|
|
@ -0,0 +1 @@
|
|||
xldcAYGIOnxW2yiX6KDZUW44-JTev8gg7r3kzrwY34k.PZDupKjVmMf0TNd3vLGxHErgeolq5CbdlHehVDWziwE
|
|
@ -64,6 +64,27 @@ Client.prototype.peerRequest = function(client){
|
|||
},'request/pair']);
|
||||
};
|
||||
|
||||
Client.prototype.match = function(filterObject){
|
||||
let keys = Object.keys(filterObject);
|
||||
let size = keys.length;
|
||||
if(size > this.info.size)
|
||||
{
|
||||
return false
|
||||
}
|
||||
for (const key of keys)
|
||||
{
|
||||
if(this.info.has(key))
|
||||
{
|
||||
if(this.info.get(key) != filterObject[key])
|
||||
{
|
||||
return false
|
||||
}
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
};
|
||||
return true
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Client|string} client
|
||||
|
|
|
@ -82,6 +82,19 @@ Room.prototype.publish = function(room){
|
|||
ROOM_CREATED(this);
|
||||
termoutput && term.green("Room Published ").white(this.name," in ").yellow(this.clients.size).white(" clients")('\n');
|
||||
};
|
||||
/**
|
||||
* @return {Client[]}
|
||||
*/
|
||||
Room.prototype.filterPeers = function(optiJson){
|
||||
let peers = [];
|
||||
this.clients.forEach(client => {
|
||||
if(client.match(optiJson))
|
||||
{
|
||||
peers.push(client);
|
||||
}
|
||||
});
|
||||
return peers;
|
||||
};
|
||||
Room.prototype.toJSON = function(detailed){
|
||||
let obj = {};
|
||||
obj.id = this.id;
|
||||
|
@ -251,14 +264,29 @@ addService(({
|
|||
break;
|
||||
}
|
||||
case 'room-peers':{
|
||||
let {roomId} = message;
|
||||
let {roomId,filter} = message;
|
||||
if(Room.rooms.has(roomId))
|
||||
{
|
||||
let filteredPeers = Room.rooms.get(roomId).filterPeers(filter || {});
|
||||
end({
|
||||
status: 'success',
|
||||
peers: [
|
||||
...Room.rooms.get(roomId).clients.values()
|
||||
].map(i => i.id)
|
||||
peers: filteredPeers.map(i => i.id)
|
||||
});
|
||||
}else{
|
||||
end({
|
||||
status: 'fail'
|
||||
})
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'room/peer-count':{
|
||||
let {roomId,filter} = message;
|
||||
if(Room.rooms.has(roomId))
|
||||
{
|
||||
let filteredPeers = Room.rooms.get(roomId).filterPeers(filter || {});
|
||||
end({
|
||||
status: 'success',
|
||||
count: filteredPeers.length
|
||||
});
|
||||
}else{
|
||||
end({
|
||||
|
|
|
@ -113,24 +113,43 @@ export default class Room extends EventTarget
|
|||
wom
|
||||
});
|
||||
}
|
||||
async fetchPeers(){
|
||||
let {status, peers} = await this.mwse.EventPooling.request({
|
||||
type:'room-peers',
|
||||
roomId: this.roomId
|
||||
}) as {status:"success"|"fail", peers: string[]};
|
||||
|
||||
let cup : Peer[] = [];
|
||||
|
||||
if(status == 'fail')
|
||||
async fetchPeers(filter?:{[key:string]:any}, onlyNumber:boolean = false) : Promise<Number | Peer[]>
|
||||
{
|
||||
if(onlyNumber)
|
||||
{
|
||||
throw new Error("Cant using peers on room")
|
||||
}else if(status == 'success'){
|
||||
for (const peerid of peers) {
|
||||
let peer = this.mwse.peer(peerid);
|
||||
cup.push(peer);
|
||||
this.peers.set(peerid, peer);
|
||||
}
|
||||
};
|
||||
return cup;
|
||||
let {count} = await this.mwse.EventPooling.request({
|
||||
type:'room/peer-count',
|
||||
roomId: this.roomId,
|
||||
filter: filter || {}
|
||||
}) as {count:Number};
|
||||
return count;
|
||||
}else{
|
||||
let {status, peers} = await this.mwse.EventPooling.request({
|
||||
type:'room/peer-count',
|
||||
roomId: this.roomId,
|
||||
filter: filter || {}
|
||||
}) as {status:"success"|"fail", peers: string[]};
|
||||
|
||||
let cup : Peer[] = [];
|
||||
|
||||
if(status == 'fail')
|
||||
{
|
||||
throw new Error("Cant using peers on room")
|
||||
}else if(status == 'success'){
|
||||
for (const peerid of peers) {
|
||||
let peer = this.mwse.peer(peerid);
|
||||
cup.push(peer);
|
||||
this.peers.set(peerid, peer);
|
||||
}
|
||||
};
|
||||
return cup;
|
||||
}
|
||||
}
|
||||
async peerCount(){
|
||||
let {count} = await this.mwse.EventPooling.request({
|
||||
type:'room/peer-count',
|
||||
roomId: this.roomId
|
||||
}) as {count:Number};
|
||||
return count;
|
||||
}
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="tr">
|
||||
<head>
|
||||
<base href="/stream/">
|
||||
|
@ -19,6 +20,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script src="index.js?v=6"></script>
|
||||
<script src="index.js?v=16"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -162,7 +162,7 @@ window.addEventListener("load", () => {
|
|||
async function startOutgoingWebcam()
|
||||
{
|
||||
outgoingStream = await navigator.mediaDevices.getUserMedia({
|
||||
video: true/*{
|
||||
video: true,/*{
|
||||
advanced: [
|
||||
{ width: { exact: 1024 } },
|
||||
{ width: { exact: 900 } },
|
||||
|
@ -171,7 +171,7 @@ async function startOutgoingWebcam()
|
|||
{ width: { exact: 320 } },
|
||||
{ width: { exact: 240 } }
|
||||
]
|
||||
}*/,
|
||||
}*/
|
||||
audio: false
|
||||
});
|
||||
outgoingStreamOnlyVideo = new MediaStream(outgoingStream);
|
||||
|
@ -270,7 +270,7 @@ setInterval(()=>{
|
|||
getStats()
|
||||
}, 1000)
|
||||
|
||||
|
||||
/*
|
||||
setInterval(() => {
|
||||
if(activePeer?.turboBitrate == 0)
|
||||
{
|
||||
|
@ -279,19 +279,19 @@ setInterval(() => {
|
|||
if(videoSender)
|
||||
{
|
||||
const parameters = videoSender.getParameters();
|
||||
parameters.encodings[0].maxBitrate = 200000;
|
||||
parameters.encodings[0].maxBitrate = 3_000_000;
|
||||
videoSender.setParameters(parameters).then(() => {
|
||||
console.log('Bitrate değiştirildi.');
|
||||
// console.log('Bitrate değiştirildi.');
|
||||
activePeer.turboBitrate = 1;
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Bitrate değiştirilirken bir hata oluştu:', error);
|
||||
// console.error('Bitrate değiştirilirken bir hata oluştu:', error);
|
||||
activePeer.turboBitrate = -1;
|
||||
});
|
||||
}
|
||||
}
|
||||
}, 5000);
|
||||
|
||||
*/
|
||||
let relative;
|
||||
|
||||
async function getStats()
|
||||
|
@ -477,7 +477,7 @@ async function getStats()
|
|||
Crypting D-TLS Cipher: ${stats.dtlsCipher}<br>
|
||||
${stats.localcert ? `EndToEnd Crypto Local Cert. Algoritm: ${stats.localcert.fingerprintAlgorithm}<br>
|
||||
EndToEnd Crypto Remote Cert. Algoritm: ${stats.remotecert.fingerprintAlgorithm}<hr>` : ''}
|
||||
Bitrate Booster: ${activePeer.turboBitrate==0?"Disabled"/*"Waiting conditions"*/:activePeer.turboBitrate==1?"Boosting":"Fail"}<br>
|
||||
Bitrate Booster: ${activePeer.turboBitrate==0?"Waiting conditions":activePeer.turboBitrate==1?"Boosting":"Fail"}<br>
|
||||
Codec Handcooling : Failed<br>
|
||||
Hardware Accelerated : Failed<hr>
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue