Twilio 视频聊天 JS 原始用户无法获取参与者跟踪事件
Twilio Video Chat JS Original user doesn't get participant track events
我有一个 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());
}
原始人(第一个加入房间的人)接收事件我缺少什么?
解决方案
将以下代码添加到 participantsConnected 方法
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.`);
}
});
});
我有一个 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());
}
原始人(第一个加入房间的人)接收事件我缺少什么?
解决方案
将以下代码添加到 participantsConnected 方法
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.`);
}
});
});