微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Twilio Video Chat JS 原始用户不会获得参与者跟踪事件

如何解决Twilio Video Chat JS 原始用户不会获得参与者跟踪事件

我有一个 WebRTC Go 房间,1:1。我的目的是让每个客户端监听静音和关闭相机事件。但是,只有第二个加入房间的用户才能获得事件。我从文档中获取了这个,但它没有提供原始的或房间的一个成员来获取后来的用户事件。

            Video.connect(token,{ name: ROOM_NAME }).then((room) => {
            

           // remove local participant code for relevance.
           
            room.participants.forEach(participantConnected);
            room.on("participantConnected",participantConnected);

            room.participants.forEach(participant => {
                participant.on('trackSubscribed',track => {
                    track.on('disabled',() => {
                        console.log(track.kind);
                        if (track.kind === 'audio') {
                            console.log(`${participant.identity} disabled mic.`);
                        }
                        if (track.kind === 'video') {
                            console.log(`${participant.identity} disabled camera.`);
                        }
                    });

                    track.on('enabled',() => {
                        if (track.kind === 'audio') {
                            console.log(`${participant.identity} enabled mic.`);
                        }
                        if (track.kind === 'video') {
                            console.log(`${participant.identity} enabled camera.`);
                        }
                    });

                });
            });

            // removed disconnect code for relevance
        });




const participantConnected = (participant) => {
    const div = document.createElement('div');
    div.id = participant.sid;
    participant.on('trackSubscribed',track => trackSubscribed(div,track));
    participant.on('trackUnsubscribed',trackUnsubscribed);

    participant.tracks.forEach(publication => {
        if (publication.isSubscribed) {
            trackSubscribed(div,publication.track);
        }
    });

    participantsDiv.appendChild(div);
}


const trackSubscribed = (div,track) => {
    if (track.kind === 'video') {
        track.dimensions.width = '90%';
    }

    div.appendChild(track.attach());
}

const trackUnsubscribed = (track) => {
    track.detach().forEach(element => element.remove());
}

对于原始(第一个加入房间的人)接收事件,我缺少什么?

解决方法

解决方案

在participantConnected方法中加入以下代码

participant.on('trackSubscribed',track => {
                track.on('disabled',() => {
                    console.log(track.kind);
                    if (track.kind === 'audio') {
                        console.log(`${participant.identity} disabled mic.`);
                    }
                    if (track.kind === 'video') {
                        console.log(`${participant.identity} disabled camera.`);
                    }
                });

                track.on('enabled',() => {
                    if (track.kind === 'audio') {
                        console.log(`${participant.identity} enabled mic.`);
                    }
                    if (track.kind === 'video') {
                        console.log(`${participant.identity} enabled camera.`);
                    }
                });

            });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。