我们正在构建一个音频广播应用程序。问题是,当音频室有3个以上的用户时,现在当另一个用户加入音频室时,他/她有时只能看到音频室中现有用户的一部分。(这个问题并非总是发生(
我们实现这一点的方式是,当用户加入聊天室时,现有成员使用sendMessageToPeer方法将自己的信息发送给新用户。我的猜测是,一些sendMessageToPeer调用可能会失败,这会导致一些成员没有出现在新用户的屏幕上。
我的问题是:
- 我们做得对吗?如果没有,正确的方法应该是什么
- 有没有办法提取房间里的一批现有用户
- 如果这是正确的,我们向新用户发送信息,如果音频室里有很多用户,会不会很慢
this._rtmEngine.on('channelMemberJoined', evt => {
const {rtcUid} = this.state
const {userData} = this.props
// send data to new joined user
this._rtmEngine?.sendMessageToPeer({
peerId: evt.uid,
text:
this.state.rtcUid +
':' +
userData._id +
':' +
userData.profilePicUrl +
':' +
userData.firstName,
offline: false,
})
})
您是否也获得了通道中现有用户的新用户信息
当有人加入音频室时,您可以通过向频道中的所有现有用户发送频道消息来完成此操作。如果您已经介绍了这一点,那么代码片段看起来是正确的,我会通过在接收方添加console.log
来检查消息是否失败。
您可以使用getMembers
方法在RTM通道中获取成员。