Javascript RTCmulticonnection getViewers+;入会活动

Javascript RTCmulticonnection getViewers+;入会活动,javascript,webrtc,Javascript,Webrtc,我正在尝试获取流的当前查看器数量 每当触发onUserStatusChanged时,我试图触发一些代码(就像用户onjoin事件一样使用) 比如: connection.onUserStatusChanged = function(status) { console.log("onUserStatusChanged"); updateViewers(); }; function updateViewers(){ connection.getAllParticipants

我正在尝试获取流的当前查看器数量

每当触发
onUserStatusChanged
时,我试图触发一些代码(就像用户onjoin事件一样使用)

比如:

connection.onUserStatusChanged = function(status) {
    console.log("onUserStatusChanged");
    updateViewers();
};

function updateViewers(){
    connection.getAllParticipants().forEach(function(participantId) {
        var peer = connection.peers[participantId];
        if(viewers && viewers.indexOf(peer.extra.nickname) === -1 && "UserA"  !== peer.extra.nickname)
            viewers.push(peer.extra.nickname);
    });
    console.log(viewers.length);
}
到目前为止,它工作得很好,但现在它也推送了有摄像头的用户,而不是看用户A的摄像头

我只需要使用“beforeAddingStream”连接到用户A的用户的
额外的昵称
: 请从github下载最新代码以使用此“beforeAddingStream”方法

使用“onExtraDataUpdated”和“updateExtraData” 使用数据通道 “listOfStreamReceivers”到阵列 使用“beforeAddingStream”: 请从github下载最新代码以使用此“beforeAddingStream”方法

使用“onExtraDataUpdated”和“updateExtraData” 使用数据通道 “listOfStreamReceivers”到阵列
connection.peers
返回
Object forEach:(callbcak)getAllParticipants:(sender)getLength:()selectFirst:()send:(data,remoteUserId)uuu-proto:Object
无法获得
连接。peers[peer.userid]
您是否尝试过“peer.extra”或使用“setTimeout=>1000”来确保“connection.peers”对象具有该用户标识。例如,
setTimeout(函数((var remoteUserId=connection.peers[peer.userid];){},1000);
或使用与“昵称”相同的“userid”例如,
connection.userid='昵称'
;现在您不需要检查额外的数据。您只需要检查将作为昵称的
peer.userid
connection.peers
返回
objectforeach:(callbcak)getAllParticipants:(sender)getLength:()selectFirst:()send:(data,remoteUserId)_uuuproto_uuuu:Object
无法获得连接。peer[peer.userid]您是否尝试过“peer.extra”或使用“setTimeout=>1000”来确保“connection.peers”对象具有该用户id。例如,
setTimeout(函数((var remoteUserId=connection.peer[peer.userid];){},1000)
或使用与“昵称”相同的“userid”例如,
connection.userid='昵称'
;现在您不需要检查额外的数据。您只需要检查将作为昵称的
peer.userid
var listOfStreamReceivers = {};
connection.beforeAddingStream = function(stream, peer) {
    var remoteUserExtra = connection.peers[peer.userid].extra;
    listOfStreamReceivers[remoteUserExtra.nickname] = peer;
    return stream;
};
var listOfStreamReceivers = {};

connection.onstream = function(event) {
    if (event.type == 'remote') {
        connection.extra.receivedStreamById = event.streamid;
        connection.updateExtraData();
    }
};

connection.onExtraDataUpdated = function(event) {
    if (event.extra.receivedStreamById) {
        listOfStreamReceivers[event.extra.nickname] = event;
    }
};
connection.session.data = true;

var listOfStreamReceivers = {};

connection.onstream = function(event) {
    if (event.type == 'remote') {
        var data = {
            receivedStreamById: event.streamid
        };

        // second parameter sends direct message to the broadcast initiator
        connection.send(data, connection.sessionid);
    }
};

connection.onmessage = function(event) {
    if (event.data.receivedStreamById) {
        listOfStreamReceivers[event.extra.nickname] = event;
    }
};
var array = Object.keys(listOfStreamReceivers);

console.log('number of receivers', array.length);

array.forEach(function(key) {
    var peer = listOfStreamReceivers[key];

    var userid = peer.userid;
    var extra = peer.extra;
});