首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RTCmulticonnection getViewers + onjoin事件

RTCmulticonnection getViewers + onjoin事件
EN

Stack Overflow用户
提问于 2017-02-22 09:49:39
回答 1查看 475关注 0票数 1

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

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

类似于:

代码语言:javascript
复制
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他的摄像头。

我只想要连接到用户A的用户的extra.nickname,他的凸轮/通道/连接

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 11:05:21

使用"beforeAddingStream":

请从github下载最新代码以使用此"beforeAddingStream“方法。

代码语言:javascript
复制
var listOfStreamReceivers = {};
connection.beforeAddingStream = function(stream, peer) {
    var remoteUserExtra = connection.peers[peer.userid].extra;
    listOfStreamReceivers[remoteUserExtra.nickname] = peer;
    return stream;
};

使用"onExtraDataUpdated“和"updateExtraData”

代码语言:javascript
复制
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;
    }
};

使用数据通道

代码语言:javascript
复制
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;
    }
};

"listOfStreamReceivers“数组

代码语言:javascript
复制
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;
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42388063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档