CloudHub 文档中心
下载中心 文档中心

RTC 实时音视频


CloudHub JSSDK

SDK 中的常量

使用方式: CloudHubRTC.CONSTANTS. 常量名,如:CloudHubRTC.CONSTANTS.MSG_TO_ALLUSER

发送消息

名称类型描述
MSG_TO_ALLUSERstring发送信息给频道中的所有人
MSG_TO_ALLEXCEPTSENDERstring发送信息给除自己以外的频道中所有人
MSG_TO_NONEUSERstring只发送信息到信令服务器,不发给任何人
userIdstring某用户 ID。Note: 只发送信息给此用户

补充说明

聊天消息转发规则说明

聊天消息 1 秒内的数据如果超过 100 条,则丢弃 100 条之后的聊天消息。例如:1 秒内发送 150 条数据,频道内用户只收到前 100 条数据,如果 1s 内发送 90 条数据,则所有人都能收到这 90 条数据。

频道的使用场景说明

  1. 直播场景,有主播和观众两种用户角色,可以通过 Client.setClientRole 方法设置主播和观众的角色。主播可以收发语音 / 视频流,而观众只能接收语音 / 视频,无法发送。直播场景有如下限制:

    • 直播场景中观众的加入 / 离开的消息不会触发,即 client.on(“peer-join”) 和 client.on( “peer-leave”) 不触发回调。
    • 直播场景中调用 setProperty 接口,如果被改变者为观众,则不会通知自定义用户属性改变,即 Client.on(“user-properties-update”) 不触发回调。
    • 直播场景中建议只让部分人 (主播或者被授予权限的观众等) 能够发 pubMsg/delMsg,而不要让所有人都能主动发 pubMsg/delMsg【比如: 10 万人的频道,观众有 9.99 万人,那么这些人不应该有主动发 pubMsg/delMsg 的能力,而应该让主播授权给某个观众,这个观众才能发 pubMsg/delMsg】。
  2. 在通信场景中,频道中的任何用户都可以收发语音 / 视频流,且直播场景的各种限制都没有,唯一限制就是不允许进入太多用户,这个场景适用于一对一通话或群聊。

信令通道和媒体传输通道说明

  1. 信令通道是客户端与信令服务器通信的基础通道,频道的任何通信行为都依赖于此通道。
  2. 媒体传输通道是客户端的流与媒体服务器建立的通道,此通道用于音视频的传输。
  3. 信令通道失去连接会使媒体传输通道断开,媒体传输通道断开不会影响到信令通道。
  4. 流的 publish、subscribe、unpublish、unsubscribe 依赖于信令通道,因为在建立媒体传输通道前需要先通过信令通道进行通信,另外流的 mute 操作也依赖于信令通道。
  5. 一旦信令通道断开,请不要进行任何通信行为(如:pubMsg、delMsg 等),建议界面出现浮层,不要让用户进行界面上的操作,直到信令通道连接恢复。

单流模式说明

  1. 单流模式指只能发布 1 个设备流。
  2. 频道默认使用单流模式。

多流模式说明

  1. 多流模式指可以发布多个设备流。
  2. 需要启用多流模式时,请在 joinChannel 前调用 enableMultiStream 方法进行启用。
  3. joinChannel 调用后 enableMultiStream 方法将失效。
  4. 不支持多流模式和单流模式在频道内切换。
  5. 移动端不支持多流模式。
  6. 多流模式不支持切换视频设备。

浏览器 getUserMedia 接口失败的错误类型

尽管用户和操作系统都授予了访问设备硬件的权利,而且未出现可能抛出 NotReadableError 异常的硬件问题,但仍然有一些问题的出现导致了设备无法被使用。

用户拒绝了当前的浏览器实例的访问请求;或者用户拒绝了当前会话的访问;或者用户在全局范围内拒绝了所有媒体访问请求。

较旧版本的规范使用了 SecurityError,但在新版本当中 SecurityError 被赋予了新的意义。

找不到满足请求参数的媒体类型。

尽管用户已经授权使用相应的设备,操作系统上某个硬件、浏览器或者网页层面发生的错误导致设备无法被访问。

指定的要求无法被设备满足,此异常是一个类型为 OverconstrainedError 的对象,拥有一个 constraint 属性,这个属性包含了当前无法被满足的 constraint 对象,还拥有一个 message 属性,包含了阅读友好的字符串用来说明情况。

因为这个异常甚至可以在用户尚未授权使用当前设备的情况下抛出,所以应当可以当作一个探测设备能力属性的手段[fingerprinting surface]。

在 getUserMedia() 被调用的 Document(Document 接口表示任何在浏览器中载入的网页,并作为网页内容的入口,也就是 DOM 树) 上面,使用设备媒体被禁止。这个机制是否开启或者关闭取决于单个用户的偏好设置。

constraints 对象未设置[空],或者都被设置为 false。

因为 getUserMedia 接口调用可能出现成功 / 失败回调都没有触发 (浏览器内部 getUserMedia 问题),因此 SDK 给 getUserMedia 添加超时时间 15 秒,一旦超过 15 秒还没有成功 / 失败回调则认为超时。

因为获取摄像头需要用户手动授权,而授权框在 15 秒内没有操作,则认为 getUserMedia 请求超时(即:超时 15 秒后用户就算允许授权,getUserMedia 也认为是失败的)。

getUserMedia 默认超时时间为 15 秒,如果需要修改这个时间,请设置 CloudHubRTC.DEVICE_ADAPTER_CONFIG.GET_USER_MEDIA_TIMEOUT_TS(毫秒级),如:CloudHubRTC.DEVICE_ADAPTER_CONFIG.GET_USER_MEDIA_TIMEOUT_TS = 30000 表示将超时时间设置为 30 秒。

可能因为各种系统各种浏览器内置的 getUserMedia 接口返回的结果不标准,因此 SDK 将不是上述类型的都统一认定为未定义错误。