在Agora.io语音讨论室中获取未发布流的用户列表

时间:2019-01-18 06:59:56

标签: javascript agora.io

可以通过

获取streamID列表
client.publish(localStream

但是它仅在用户发布流时可用

client.join(null, 'room-name', 'user-id');

[[[[Question]]]

我想查看未发布信息流但通过

加入会议室的用户列表
     @override
      Widget build(BuildContext context) {
        final numberOfTextFields = 5;
        final sizePerItem = MediaQuery.of(context).size.height / numberOfTextFields;
        return SafeArea(
          child: Scaffold(
              resizeToAvoidBottomPadding: true,
              body: SingleChildScrollView(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: List.generate(
                    numberOfTextFields,
                    (index) => SizedBox(
                          height: sizePerItem,
                          child: TextField(
                            decoration: InputDecoration(
                              contentPadding: EdgeInsets.all(sizePerItem / 2),
                              hintText: "$index",
                            ),
                          ),
                        ),
                  ).toList(),
                ),
              )),
        );
      }

由于该用户加入会议室时可以听到流,而无需发布自己的localStream。 因此,即使他们不发布信息流,我也想向所有观众展示。

为了节省带宽, 最好不要发布localStream,而只订阅语音。 因此,即使他们不发布流,我也想识别所有用户

3 个答案:

答案 0 :(得分:0)

在现有代码中添加信令系统,以便在用户加入系统时将信号发送给所有用户。如果需要更好地实施,您可以跟踪用户流并进行列表。

答案 1 :(得分:0)

定期对所有可用流进行Ping操作可能有助于了解某人何时进入房间而不是流。

答案 2 :(得分:0)

您应该使用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