开发概念


参见

阅读本章,需要先了解以下内容:

开发者控制台

Session (会话)

每个 Session 代表着一个视频房间,房间内的用户可以互相通信。会话的创建,连接和管理取决于开发者的需要。

Session Type (会话类型)

会话分为 p2p (点对点) 和 relay (服务器)。

p2p 下用户之间优先采用端对端连接,如果端对端效果不佳则经智能服务器转发技术优化。这种模式适合4-8人的小型会话。根据电脑和带宽的不同,最大可以支持15人以内的中型会话。

relay 面向中大型的会话,该模式下视频流经过服务器压缩转发给其他人,能支持人数更多的会议。

警告

目前, relay 类型正在测试中。除非开发者进行录制功能内部测试,否则应总是选择 p2p。

创建和管理 Session

开发者既可以选择手动从 实时猫控制台 生成 Session ,也可以通过调用 服务器RESTful API 生成。在实际开发场景中,一般需要开发者动态调用 服务器RESTful API 的具体方法。

Session 建立时,开发者可以将业务中需要的房间名、编号等附加信息,存入会话的可选参数 data 中,以供连接各方查询,该参数可最大存储1024个字符。

会话创建后返回的 Session ID 可能需要开发者在应用的前后台进行存储和维护。 Session ID 的格式为32位16进制字符串(UUID4),形如 12345678-90ab-4def-0123-4567890abcdf 。

Session 的有效期和作废

默认情况下, Session 仅在15天内有效,因此应该通过 服务器API 随用随生成。开发者可以创建的会话数量不设上限。

如果希望该会话不被删除,应在控制台中将会话标记为 permanent (永久)。这样,该会话将在控制台中置顶,而且永远不会过期。

客户的一端想要连入会话则需要有效的 Token (令牌) ,Token 由 Session 生成。

Token (令牌)

如果 Session 代表会话房间,那么 Token 就是该房间的门卡,用来验证用户的身份和权限。一个 Token 只能访问生成他的 Session 。

Token的分类

Token 分为两类: Publisher(发布者) 和 Subscriber (订阅者) 。 Publisher 有发布视频,音频,文字和文件,共享屏幕等权限;而 Subscriber 则仅仅能接收这些信息,发布权限被从连接底层限制。

和 Session 一样, Token 的创建,连接和管理也可以由开发者自由定制。

警告

如果您不能确定是使用 Publisher 还是 Subscriber 类型,那么总应该使用 Publisher 类型

创建和管理Token

Token 可以通过调用 服务器API 生成,也可以在控制台手动生成。 创建时,需要提供 Token 所在的 Session ID,还需要提供令牌类型 type 以及可选的附加信息: data 。

Token 的连接类型 采用 p2p 还是 relay,由生成 Token 的 Session 类型决定。

令牌创建后返回的 Token ID 可能需要开发者在应用的前后台进行存储和维护。 Token ID 的格式也是32位16进制字符串 (UUID4) 。

Token 的有效期和作废

与 Session 一样, 令牌 Token 仅在15天内有效,因此应该通过 服务器API 随用随生成。开发者可以创建的令牌数量不设上限。

一般情况下, Token 应该一次使用,即用即弃。 如果由于设计逻辑的原因,您希望该令牌一直不被删除,应在控制台中将令牌标记为 permanent 。这样,该会话将在控制台中置顶,而且永远不会过期。

客户端SDK

实时猫客户端SDK是连接实时猫公私有云的开发者工具。使用实时猫客户端SDK后,开发者只需关注实时通信连接的逻辑,而无需关注音视频的处理和通信实现。

欲了解各客户端SDK的使用方法,请返回 实时猫文档-首页

2.4. 客户端SDK开发

Stream (流)

Stream (流)

是对客户端音视频的封装, 分为 LocalStream (本地流) 和 RemoteStream (远程流)。流都需要通过在播放器 (player) 播放才能显示。

LocalStream

由客户端生成,通过P2P类型和服务器类型会话建立的连接传输。

RemoteStream

则是在接收流的客户端,由 Receiver (接收器) 接收的流, 每一个 RemoteStream 对应一个其他人的 LocalStream 。当网络情况不佳时,可以通过调用 RemoteStream 的 stream.disableVideo 方法, 不接收 RemoteStream 的视频, 减小相应的带宽消耗, 从而保障音频的流畅。如果对 LocalStream 调用 stream.disableVideo 方法,所有接收方都会失去该 LocalStream 对应 RemoteStream 的视频。

释放

如果不再使用客户端音视频设备,可以通过 LocalStream 的 stream.release 方法释放资源。

动态调整

LocalStream在生成时可以设置视频分辨率, 目前不支持开发者动态调节流的视频分辨率大小。

Session (会话)

Session

是对会话的封装,通过连入 Session , 用户可以与其他人建立连接, 并发送 Stream 和数据。

Session的连入

通过调用 session.connect 方法进行。连入成功会触发 connected 事件,并返回当前已连入此 Session 的 所有 Token, 此后,可通过 in 事件,监听其它 Token 连入 ;通过 out 事件,监听 Token 退出。连入失败则会触发 error 事件,并返回错误信息。

消息传递

Session连入成功后即可调用 session.sendMessage 或 session.broadcastMessage 方法发送或广播消息, 通过监听 message 事件, 可以接收此消息。

P2P类型

P2P类型会话提供了 session.send 方法和 session.sendTo 方法, 分别用于给 Session 中的所有 Token 和某个 Token 发送 Stream 和数据。在发送时, 用户可以设置 attr 标签用来标记。发送成功后,发送方会触发 local 事件,返回 Sender 。接收方则触发 remote 事件,返回 Receiver 。

服务器类型

服务器会话则提供了 session.link 和 session.unlink 方法用于与实时猫relay服务器连接。

Session的主动退出

可以通过调用 session.disconnect 方法进行。退出成功将会触发 disconnect 事件, 退出后, 所有通过此 Session 创建的 Sender 和 Receiver 都会关闭。

Sender (发送器)

Sender

对应 Session 建立的一个连接的发送端。每个 Sender 都有一个随机的 id 作为唯一标示用于和 Receiver(接收端) 相对应。

P2P类型

P2P类型会话下, session.send 或 session.sendTo 方法调用成功后,通过 local 事件回调返回 Sender 。服务器类型 会话 下, session.link 方法调用成功后,通过 local 事件返回 Sender。

Sender的释放

Sender 随着 Session 的退出而关闭。也可以通过 close 方法主动关闭,对应的 Receiver 也会随之关闭。

消息传递

用户可以通过 Sender 发送消息和文件, Sender 仅在 p2p 模式下才支持发送文件和消息。

Receiver (接收器)

Receiver

对应 Session 建立的一个连接的接收端。每个 Receiver 都有一个随机的 id 作为唯一标示用于和 Sender 相对应。

Receiver的回调

P2P 和 服务器类型 会话均是在 session.send 或 session.sendTo 方法调用成功后,通过 remote 事件回调返回 Receiver 。

Receiver的释放

Receiver 的连接随着 Session 退出而关闭, 也可以通过 close 方法主动关闭,对应的 Sender 也会随之关闭。

消息传递

用户可以通过 Receiver 接收消息和文件, Receiver 仅在 p2p 模式下才支持接收文件和消息。

参见

开发流程