【问题标题】:The user-left event is fired when unpublish method is called调用 unpublish 方法时会触发 user-left 事件
【发布时间】:2020-05-26 16:46:39
【问题描述】:

我有一个简单的广播测试应用。

我作为主持人加入了一个频道,最终我取消了发布。

this.client = AgoraRTC.createClient({ mode: "live", codec: "h264", role: "host"});

//...then
await this.client.publish([this.audioTrack, this.videoTrack]);

//..eventually
await this.client.unpublish([this.audioTrack, this.videoTrack]);

这会立即在“观众”远程用户中触发users-unpublisheduser-left

这在 SDK 中没有记录。

如何防止user-left事件在用户没有真正离开频道时被触发?

【问题讨论】:

    标签: agora.io agora-web-sdk-ng


    【解决方案1】:

    这是 agora-web-sdk-ng 的默认行为。当主持人呼叫“取消发布”以取消发布他的本地流时,他的角色将从主持人变为观众。这将触发“user-left”回调。

    “左用户”回调接口:https://agoraio-community.github.io/AgoraWebSDK-NG/api/en/interfaces/iagorartcclient.html#event_user_left

    “取消发布”api:https://agoraio-community.github.io/AgoraWebSDK-NG/api/en/interfaces/iagorartcclient.html#unpublish

    如果您想检测用户是否离开频道而不是切换角色,您可以通过实现 RTM SDK 来实现。用户在加入RTC频道(视频通话频道)时,也要加入与视频通话频道名称相同的RTM频道。然后,您可以使用 RTM SDK 中的“getMembers”方法来检索该频道中的用户列表。

    “getMembers”接口:https://docs.agora.io/en/Real-time-Messaging/API%20Reference/RTM_cpp/classagora_1_1rtm_1_1_i_channel.html#a3f9c943059ac48a568c81798da38c3cb

    【讨论】:

    • 不幸的是,这是 agora-web-sdk-ng。在“直播”模式下,移除流不被视为角色的变化。
    • 我对答案做了一些修改,希望这可以回答你的问题。
    • 辛苦了。请我自己的答案以获得更好的解决方法
    【解决方案2】:

    user-left 作为正在开发的 SDK 的副作用而被触发。此效果计划在下一个版本中移除。

    区分用户离开诗句未发布的一种方法是事件的reason 参数。如果在主机取消发布媒体时触发事件,则该参数保持 BecomeAudience。否则,参数成立 QuitServerTimeOut

    另外,事件的原因是“Becomeaudience”,user-joind 事件将在 10 秒后触发。

    https://agoraio-community.github.io/AgoraWebSDK-NG/api/en/interfaces/iagorartcclient.html#event_user_left

    【讨论】:

      猜你喜欢
      • 2020-10-02
      • 1970-01-01
      • 2011-03-21
      • 2012-12-13
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多