常见问题

产品 / 插件
平台 / 框架

如何处理房间相关问题?

产品 / 插件:实时音视频 / 实时语音 / 低延迟直播 / 畅直播

平台 / 框架:iOS / Android / macOS / Windows

更新时间:2022-04-09 17:58


网络环境差时,SDK 会强行让用户自动退出房间吗?

当用户网络环境差时,SDK 会有内部重试的流程。若需关注房间连接情况,请监听 onRoomStateChanged 回调。

  • 用户登录房间过程中,其房间状态为 LOGINING。
  • 用户正常连接房间时(即登录房间成功),其房间状态为 LOGINED,表示连接成功。
  • 当网络断开或无法访问时,用户的房间状态会从 LOGINED 变为 RECONNECTING,即正在请求连接,表示房间连接暂时中断,正在重新连接中。
    • 重连成功后,用户房间状态会重新变为 RECONNECTED。
    • 如果达到最大重试时间(20 分钟)还没有连上,用户房间状态会变成 RECONNECT_FAILED,表示客户端与房间彻底断开,当前推拉流会被停止,用户会自动退出房间,且此时 SDK 内部不会再进行重连(建议您提示用户已掉线,可以尝试检查网络情况)。

客户端是否需要维护房间?

房间是自动创建和删除的,客户端无需处理和维护。当所有客户端都离开一个房间时,房间自动被删除。

如何监听房间内谁在说话?

在每个房间,通话中是否有管理员?

没有管理员的概念。对于房间内通话的管理是属于业务管理层的范围,可以由客户实现自己的信令层,调用 SDK 的接口(startPublishingStream/stopPublishingStream/startPlayingStream/stopPlayingStream)来实现通话管理。或者使用 SDK 的信令服务进行相关通知,详情请参考 实时消息

发送实时消息后,为什么收不到回调?

问题原因

可能有以下几种情况:

  • 消息接收方未设置发送消息接口的对应回调。
  • 消息发送方和消息接收方未使用相同的 AppID。
  • 消息发送方和消息接收方未在同一个房间内,即房间 ID 不同。
  • 消息发送方和消息接收方未同时在线,没有都处于“已成功登录房间”状态。
  • 消息发送方不能接收本端发送的实时消息。

解决方案

针对以上提到的几种情况,开发者在实现实时消息功能时必须同时满足:

  • 消息接收方已设置发送消息接口的对应回调。
  • 消息发送方和消息接收方需要使用相同的 AppID。
  • 消息发送方和消息接收方需要在同一个房间内,即使用相同的房间 ID。
  • 消息发送方和消息接收方需要同时在线,即需要保证都处于“已成功登录房间”状态。

另外,开发者需要关注到,消息发送方无法接收本端发送的实时消息。

相关链接

各平台发送实时消息接口对应的回调可参考:
平台 消息类型 发送消息接口 接收消息回调 相关文档
iOS
广播消息
实时消息
弹幕消息
自定义消息
Android
广播消息
实时消息
弹幕消息
自定义消息
macOS
广播消息
实时消息
弹幕消息
自定义消息
Windows
广播消息
实时消息
弹幕消息
自定义消息
Web
广播消息
实时消息
弹幕消息
自定义消息
小程序
广播消息
实时消息
弹幕消息
自定义消息
Linux
广播消息
实时消息
弹幕消息
自定义消息
React Native
广播消息
实时消息
弹幕消息
自定义消息

Web 平台登录房间时提示报错:“cmd=login, err_code=1011, err_message=token format error”?

登录房间时 “token” 参数传入的格式错误导致该报错,“token” 为字符串类型,需要将 json 格式经过 base64 加密后再传入 loginRoom 接口中,具体实现请参考 快速开始 - 实现流程 的 “3.2 登录房间”。

Web 平台登录房间报错:"content":"cmd=login, err_code=1000000101, err_message=login liveroom request fail", 或者 "content":"server error=1000000101", 原因是什么?

出现这个报错有两个可能原因:

  • AppID 过期。
  • Server 地址错误,请到 ZEGO 控制台 确认。

退出房间,是否需要主动停止推拉流?

  • 如果调用 “logoutRoom” 退出主房间,或者被后台服务踢出房间,SDK 会自动停止推拉流。
  • 如果调用 “logoutRoom” 退出多房间,SDK 不会自动停止推拉流。

开发者需要参照上面的逻辑,根据业务需求,处理停止推拉流的逻辑。

多房间功能是否需要特殊配置?

  1. 将 Express-SDK 升级到 1.13.0 或以上版本;
  2. 请联系 ZEGO 技术支持,申请打开该多房间功能。

登录房间的时候,为什么会报错:1002001?

错误码 “1002001”,表示用户不能同时登录多个房间。在登录新的房间前,需要先调用 “logoutRoom” 退出当前房间,否则 SDK 会判定当前用户登录多个房间,即会产生此报错。

使用 “switchRoom” 切换房间的时候,为什么报错:1000002-没有登录房间?

  • 切换房间之前,需要先调用 “loginRoom” 登录一个房间 A,才能使用 “switchRoom” 切换到房间 B。
  • 如果调用 “switchRoom”时,使用的 “fromRoomID” 参数和用户当前所在的 “roomID” 不一致,也会产生此报错。