使用easyrtc的房客监听器,一旦用户列表更新,我该如何调用其他用户?

我正在使用房间的听众监听室内用户的更新。 在演示中,用户列表被更新为新用户,并具有用于调用每个用户的button,类似于即时消息程序中的联系人列表。 我想要做的是电话会议,无论何时用户连接,他们都会被其他人自动呼叫。

以下是我的代码目前的样子:

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进行了testing。

我使用正确的听众吗? 当有新用户进入房间时,是否有其他方式可以自动发起同行的呼叫?

每当更新时,不要试图在userList中调用任何新用户,而应该是刚join房间的用户负责调用其他人。 这样你build立了一个链:

  1. 用户Xjoin房间
  2. 用户Yjoin房间
    1. 用户列表为用户X更新
    2. 用户Y呼叫用户X
  3. 用户Zjoin房间:
    1. 用户列表为用户X和Y更新
    2. 用户Z呼叫用户X
    3. 用户Z呼叫用户X

等等。 要做到这一点的方法是跟踪用户何时进入房间。

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

  1. 入室听众
  2. 室内的听众

对于已经在房间中的其他用户,只有房间的听众将被执行。

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

用户列表更新时调用其他用户的解决scheme是:

 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; } });