前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实时音视频Web接入——异常处理

实时音视频Web接入——异常处理

原创
作者头像
neallin
发布2020-04-04 14:06:54
2.5K0
发布2020-04-04 14:06:54
举报
文章被收录于专栏:实时音视频Web接入

不同于一般的Web应用开发,实时音视频对网络质量的要求更高,过往对Web应用开发的经验在实时音视频场景下是不够的。下面我总结一些实际业务场景可能会遇到的问题,以及相应的处理方法。

接入API文档中,可以将错误类型大致分为2类,回调和通知。

回调错误符合常规的Web开发习惯,理解上也没有难度,这里我主要介绍通知类型的错误。

α. 怎么办

1. 处理流程

2. 代码示例

代码语言:javascript
复制
// 下面代码的 client 是 client实例
// https://www.qcloudtrtc.com/trtc-web-sdk/docs/api/Client.html

// 异常监听
client.on('error', error => {
  // 业务侧数据上报
  let errorCode = error.getCode()
  let errorCodeHex = `0x${errorCode.toString(16)}`
  console.error('[trtc] client error observed: ' + error)
  switch (errorCode) {
    case 0x4001:
      retryOrReload('websocket 初始化失败', errorCodeHex)
      break
    case 0x4002:
      retryOrReload('websocket 信令通道异常', errorCodeHex)
      break
    case 0x4003:
    case 0x4005:
      retryOrReload('音视频数据传输通道错误', errorCodeHex)
      break
    case 0x4004:
      retryOrReload('进房失败', errorCodeHex)
      break
    case 0x4041:
      retryOrReload('媒体传输服务超时', errorCodeHex)
      break
    case 0x4042:
      retryOrReload('远端流订阅超时', errorCodeHex)
      break
    case 0xffff:
      retryOrReload('未知错误', errorCodeHex)
      break
    default:
      retryOrReload(`错误代码 ${errorCode}(0x${errorCode.toString(16)})`, errorCodeHex)
      break
  }
})

// 重连逻辑
// 建议有一个重连的上限,例如 3 次,这里只做重连操作
const retryMaxTimes = 3

function retryOrReload(msg, code) {
    // 经过了若干次尝试仍然无法重连成功
    if ( retryTimes > retryMaxTimes) {
        alert( `网络状态异常(${code}),请您检查网络连接刷新页面尝试重连。`)
        return
    }
    // 重连逻辑,离开,再加入房间
    client
      .leave()
      .then(() => {
        client.join({... }).catch(e => {
          retryOrReload(msg)
        })
      })
      .catch(e => {
        retryOrReload(msg)
      })
}

上面回答了怎么办问题。如果想了解背后的逻辑,可以往下看。

β. 为什么

1. 错误的类型这么多,为什么最后只给用户弹出一个网络状态异常的提示?

用户不是开发者,不必也无需了解这些背后的原因,你只需要告诉他结论,以及怎么办,就够了。

2. 其他问题

可以评论留言

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • α. 怎么办
    • 1. 处理流程
      • 2. 代码示例
      • β. 为什么
        • 1. 错误的类型这么多,为什么最后只给用户弹出一个网络状态异常的提示?
          • 2. 其他问题
          相关产品与服务
          实时音视频
          实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档