gpt4 book ai didi

javascript - 使用easyrtc的room occupant listener,如何在用户列表更新后立即调用其他用户?

转载 作者:行者123 更新时间:2023-11-29 22:01:25 24 4
gpt4 key购买 nike

我正在使用 room occupant listener收听房间内用户的更新。在演示中,用户列表随新用户更新,并且它们有用于调用每个用户的按钮,类似于即时消息程序中的联系人列表。我想要做的是电话 session ,只要有用户连接,其他人就会自动调用他们。

这是我的代码目前的样子:

var calledUsers = {};
easyrtc.setRoomOccupantListener(function (roomName, userList, selfInfo) {
for (easyrtcid in userList) {
if (easyrtcid in calledUsers && calledUsers[easyrtcid]) {
console.log('already in call with', easyrtcid);
} else {
easyrtc.call(
easyrtcid,
function success(otherCaller, mediaType) {
calledUsers[easyrtc] = true;
},
function failure(errorCode, errorMessage) {
calledUsers[easyrtc] = false;
}
);
}
}
});

我在台式机和移动设备上的 Chrome 和 Firefox 中对此进行了测试。

我使用的监听器是否正确?有没有其他方法可以在新用户进入房间时自动发起与同行的通话?

最佳答案

与其在 userList 更新时尝试调用任何新用户,不如让刚加入房间的用户有责任调用其他人。这样你就建立了一个链:

  1. 用户 X 加入房间
  2. 用户 Y 加入房间
    1. 为用户 X 更新了用户列表
    2. 用户 Y 调用用户 X
  3. 用户 Z 加入房间:
    1. 为用户 X 和 Y 更新了用户列表
    2. 用户Z给用户X打电话
    3. 用户Z给用户Y打电话

等等。实现此目的的方法是跟踪用户首次进入房间的时间。

进入房间时,事件监听器按以下顺序执行:

  1. 房间入口监听器
  2. 房间住户听众

对于已经在房间内的其他用户,只会执行房间占用者监听。

这意味着当你进入一个房间时,你会得到当前的用户列表,然后你可以循环调用每个用户。但是第二次在房间占用监听器中获得更新的用户列表时,您不会调用任何其他用户。

每当用户列表更新时调用其他用户的解决方案是:

var needToCallOtherUsers;

easyrtc.setRoomEntryListener(function(entry, roomName) {
needToCallOtherUsers = true;
});

easyrtc.setRoomOccupantListener(function(roomName, userList, selfInfo) {
var easyrtcid;
if (needToCallOtherUsers) {
for (easyrtcid in userList) {
easyrtc.call(
easyrtcid,
function success(otherCaller, mediaType) {
console.log('success: ', otherCaller, mediaType);
},
function failure(errorCode, errorMessage) {
console.log('failure: ', errorCode, errorMessage);
}
);
}
needToCallOtherUsers = false;
}
});

关于javascript - 使用easyrtc的room occupant listener,如何在用户列表更新后立即调用其他用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23552756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com