可以通过以下方法获取流ID列表
client = AgoraRTC.createClient({mode, codec});
client.on('stream-subscribed'
但它仅在用户发布流时可用
client.publish(localStream
[[ 问题 ]]]
我想查看未发布流但通过以下方式加入聊天室的用户列表
client.join(null, 'room-name', 'user-id');
因为用户可以在加入聊天室时听到流,而无需发布自己的 localStream。因此,我想向所有观众展示,即使他们不发布流。
为了节省带宽,最好不要发布本地流,只订阅语音。因此,我想识别所有用户,即使他们不发布 stream
信令系统添加到现有代码中,以便在用户加入系统时向所有用户发送信号。如果需要更完美地实现,您可以跟踪用户流并进行列表。
应使用 peer-online
事件(在远程用户或主机加入频道时发生。
client.on('peer-online', function(evt) {
console.log('peer-online', evt.uid);
});
查看 Agora.io 文档中on
事件的完整列表:https://docs.agora.io/en/Video/API%20Reference/web/interfaces/agorartc.client.html#on
更新
根据下面的评论,此方法仅适用于所有用户都具有广播角色communication
模式。在live
模式下,没有办法获取使用 Agora RTC SDK 的用户,但你可以使用 Agora RTM SDK 统计频道中的用户。
借助 Agora RTM SDK,您可以创建一个数据通道,每个用户都会加入该通道,并加入视频直播。Agora RTM 允许您在加入 RTM 频道之前或之后查看 RTM 频道中的用户数量,您可以使用MemberJoined
和MemberLeft
频道事件来监听新用户。
定期 ping 所有可用的流可能有助于了解何时有人进入房间但不流式传输。