一.rtm(real-time Messaging):实时消息。Agora RTM SDK是声网提供的用于实现消息通道、呼叫、聊天、状态同步等功能的SDK。
rtc(real-time Communication):实时通信。Agora RTC SDK是声网提供的用于实现音频视频实时通信的SDK。
二.AgoraRTC全局模块:通过调用API建立连接,控制音视频通话和直播服务。
AgoraRTC的方法有:
(1)核心方法:
createClient:创建本地客户端;
(2)本地音视频采集:创建音视频轨道对象的方法。
createMicrophoneAudioTrack:通过麦克风创建一个音频轨道对象;
createCameraVideoTrack:通过摄像头创建一个视频轨道对象;
createMicrophoneAndCameraTracks:同时创建麦克风音频轨道对象和摄像头视频对象;
createScreenVideoTrack:通过屏幕共享创建一个视频轨道对象;
createBufferSourceAudioTrack:通过音频文件创建一个音频轨道对象;
createCustomAudioTrack:创建一个自定义的音频轨道对象;
createCustomVideoTrack:创建一个自定义的视频轨道对象;
(3)媒体设备查询:查询相关设备的方法。
getDevices:获取媒体设备列表;
getCamera:获取摄像头列表;
getMicrophone:获取麦克风列表;
getPlaybackDevices:获取音频播放设备列表;
getElectronScreenSources:获取Electron屏幕共享源列表;
(4)日志管理:管理日志,如打开、关闭、设置日志。
enableLogUpload:打开日志上传功能;
disableLogUpload:关闭日志上传功能;
setLogLevel:设置日志等级;
(5)全局事件回调:音视频采集设备状态变化事件、音频轨道自动播放失败事件。
onCameraChanged:视频采集设备状态变化回调;
onMicrophoneChanged:音频采集设备状态变化回调;
onAudioAutoplayFailed:音频轨道自动播放失败回调;
(6)其他:
checkSystemRequirements:检测浏览器兼容性;
getSupportedCodec:获取支持的编码格式;
AgoraRTC中的类:
(1)AgoraRTCClient类:AgoraRTCClient是一个本地客户端对象,代表一个通话中的本地用户;提供音视频通话的核心功能,比如
join:加入频道;
leave:离开频道;
publish:发布本地音视频轨道;
unpublish:取消发布本地音视频轨道;
subscribe:订阅远端用户的音视频轨道;
unsubscribe:取消订阅远端用户的音视频轨道;
(2)LocalTrack类:LocalTrack是是Agora Web SDK中用于定义本地音视频轨道的抽象类,可用于本地播放和发布。
派生类对象有本地音频轨道和本地视频轨道:
本地音频轨道有:
LocalAudioTrack:最基础的本地音频轨道对象,包含了基础的本地音频控制,如播放、设置音量控制,通过AgoraRTC.createCustomAudioTrack创建;
MicrophoneAudioTrack:本地麦克风音频轨道对象,比LocalTrack多一些控制麦克风的方法,通过AgoraRTC.createMicrophoneAudioTrack创建;
BufferSourceAudioTrack:通过读取音频数据源创建的本地音频轨道,比LocalAudio多一些控制音频数据源的方法,通过AgoraRTC.createBufferSourceAudioTrack创建;
本地视频轨道有:
LocalVideoTrack:最基础的本地视频轨道对象,包含了基础的本地视频控制,如播放、美颜,通过AgoraRTC.createCustomVideoTrack或者AgoraRTC.createScreenVideoTrack创建;派生自LocalTrack;
CameraVideoTrack:本地摄像头视频轨道对象,比LocalVideoTrack多了一些控制摄像头和编码参数的方法,通过调用AgoraRTC.createCameraVideoTrack创建;派生自LocalVideoTrack;
(3)RemoteTrack类:RemoteTrack是Agora Web SDK中用于定义远端音视频轨道的抽象类。
需要先调用AgoraRTCClient.subscribe订阅远端用户,然后从远端用户对象AgoraRTCRemoteUser中获取派生自RemoteTrack的RemoteAudioTrack对象和RemoteVideoTrack对象。
三.AgoraRTM全局模块:Agora RTM Web SDK库在网页浏览器中通过API调用声网的实时消息服务。AgoraRTM是Agora RTM SDK的导出模块,产生名为AgoraRTM的全局变量。
Agora RTM Web SDK提供的核心功能有:
(1)登录登出相关。
(2)点对点信息。
(3)查询用户状态
(4)订阅或取消订阅单个或多个指定用户的在线状态。
(5)用户属性增删改查。
(6)频道属性增删改查。
(7)查询单个或多个频道的成员人数。
(8)上传和下载文件或图片。
(9)加入离开频道相关。
(10)频道消息。
(11)获取频道成员列表。
(12)呼叫邀请管理。
(13)更新Token。
(14)日志设置与版本查询。
(15)客户端实例配置。
事件有:
LocalInvitationEvents:LocalInvitation实例上的事件类型。
(1)LocalInvitationAccepted:返回给主叫:被叫已接受呼叫邀请。
(2)LocalInvitationCanceled:返回给主叫:被叫已取消呼叫邀请。
(3)LocalInvitationFailure:返回给主叫,呼叫邀请进程失败。
(4)LocalInvitationReceivedByPeer:返回给主叫,被叫已收到呼叫邀请。
(5)LocalInvitationRefused:返回给主叫,被叫已拒绝呼叫邀请。
RtmChannelEvents:RtmChannel实例上的事件类型。
(1)AttributesUpdated:频道属性更新回调。返回所在频道的所有属性。只有当频道属性更新者将 enableNotificationToChannelMembers设置为true后,该回调才会被触发。该标志只对当前频道属性操作有效。
(2)ChannelMessage:收到频道消息的事件通知。
(3)MemberCountUpdated:频道成员人数更新回调。返回最新频道成员人数。频道成员人数≤ 512时,触发频率为1次/秒;频道成员人数> 512时,触发频率为1次/3秒;用户在成功加入该频道时会收到该回调。可通过监听该回调获取加入频道时的频道成员人数和后继人数更新。
(4)MemberJoined:收到用户加入频道的通知。当频道成员>512时,该回调失效。
(5)MemberLeft:收到用户离开频道的通知。用户调用leave方法或者由于网络原因与Agora RTM系统断开连接超过30s都会触发该回调。当频道成员>512时,该回调失效。
RemoteInvitationEvents:RemoteInvitation实例上的事件类型。
(1)RemoteInvitationAccepted:返回给被叫:接受呼叫邀请成功。
(2)RemoteInvitationCanceled:返回给被叫:主叫已取消呼叫邀请。
(3)RemoteInvitationFailure:返回给被叫:呼叫邀请进程失败。
(4)RemoteInvitationRefused:返回给被叫:拒绝呼叫邀请成功。
RtmClientEvents:RtmClient实例上的事件类型。
(1)ConnectionStateChanged:通知SDK与Agora RTM系统的连接状态发生了变化。
(2)MessageFromPeer:收到来自对端的点对点消息。
(3)RemoteInvitationReceived:收到来自主叫的呼叫邀请。
(4)PeersOnlineStatusChanged:被订阅用户在线状态改变回调。首次订阅在线状态成功时,SDK会返回本回调,显示所有被订阅用户的在线状态;每当被订阅用户的状态发生改变,SDK都会通过该回调通知订阅方;如果SDK在断线重连过程中有被订阅用户的在线状态发生变化,SDK会在重连成功时通过该回调通知订阅方。
(5)TokenExpired:(SDK断线重连时触发)当前使用的RTM Token已超过24h的签发有效期。该回调仅会在SDK处于RECONNECTING状态时因RTM后台检测到Token签发有效期过期而触发,SKD处于CONNECTED状态时该回调不会被触发。收到该回调时需尽快在业务服务端生成新的Token并调用renewToken方法把新的Token传给Token验证服务器。
AgoraRTM中的类:
(1)RTMClient:RTM客户端类。通过AgoraRTM.createInstance方法创建RTM客户端实例。
方法:
(1)addOrUpdateChannelAttributes:添加或更新某指定频道的属性。无需加入指定频道即可为该频道更新频道属性。当某频道处于空频道状态数分钟后,该频道的频道属性将被情空。
(2)addOrUpdateLocalUserAttributes:添加或更新本地用户的属性。
(3)clearChannelAttributes:清空某指定频道的属性。
(4)clearLocalUserAttributes:清空本地用户的所有属性。
(5)createChannel:创建一个RTMChannel实例。
(6)createLocalInvitation:创建一个LocalInvitation实例。
(7)createMediaMessageByUploading:上传一个文件到Agora服务器以获取RtmFileMessage实例,可用于发送文件消息。
(8)createMessage:创建一个消息实例,可用于发送点对点消息或频道消息。
(9)deleteChannelAttributesByKeys:删除某指定频道的指定属性。无需加入指定频道即可删除该频道的属性。
(10)deleteLocalUserAttributesByKeys:删除本地用户的指定属性。
(11)downloadMedia:通过Media ID 从Agora服务器下载文件或图片。
(12)getChannelAttributes:查询某指定频道的全部属性。无需加入指定频道即可查询该频道的属性。
(13)getChannelAttributesByKeys:查询某指定频道指定属性名的属性。
(14)getChannelMemberCount:查询单个或多个频道的成员人数。
(15)getUserAttributes:获取指定用户的全部属性。
(16)getUserAttributesByKeys:获取指定用户指定属性名的属性。
(17)login:用户登录Agora RTM系统。
(18)logout:退出登录,退出后自动断开连接和销毁回调监听。
(19)on:在该频道实例上添加listener函数到名为eventName的事件。
(20)queryPeersBySubscriptionOption:查询某指定内容被订阅的用户列表。
(21)queryPeersOnlineStatus:查询指定用户的在线状态。
(22)renewToken:更新当前token。
(23)sendMessageToPeer:本地用户(发送者)向指定用户(接收者)发送点对点消息或点对点的离线消息。
(24)setChannelAttributes:全量设置某指定频道的属性。
(25)setLocalUserAttributes:全量设置本地用户的属性。
(26)setParameters:修改RTMClient实例配置,修改实时生效。该方法从v1.4.2起废弃,使用updateConfig。
(27)subscribePeersOnlineStatus:订阅指定单个或多个用户的在线状态。首次订阅成功后,SDK会通过RtmClientEvents.PeersOnlineStatusChanged回调返回被订阅用户在线状态。每当被订阅用户在线状态发生变化时,SDK都会通过RtmClientEvents.PeersOnlineStatusChanged回调通知订阅方。
如果SDK在断线重连过程中有被订阅用户的在线状态发生改变,SDK会在重连成功时通过RtmClientEvetns.PeersOnlineStatusChanged回调通知订阅方。
用户登出Agora RTM系统后,所有之前的订阅内容都会被清空。SDK会在网络连接中断时进入断线重连状态,重连成功时SDK会自动重新订阅之前订阅用户。
(28)unsubscribePeersOnlineStatus:退订指定单个或多个用户的在线状态。
(29)updateConfig:修改RtmClient实例配置,修改实时生效。
(2)RtmMessage类:用来表示RTM消息的类型别名。类型有RtmTextMessage(文本消息)、RtmRawMessage(自定义二进制消息)、RtmImageMessage(图片消息)、RtmFileMessage(文件消息)。
(3)RtmChannel类:RTM频道类,通过createChannel方法创建RTM频道实例。
方法:
(1)getMembers:获取频道用户列表。返回Primise,该Promise会在成功获取频道用户列表后resolve,Promise返回的值为该频道所有用户ID的数组。
(2)join:加入该频道。加入频道成功后可收到该频道消息和频道用户进退通知。最多可加入20个频道。返回的Promise会在加入频道成功后resolve。
(3)leave:离开该频道。离开频道后不再接收频道消息和频道用户进退通知。返回的Promise会在离开频道成功后resolve。
(4)sendMessage:发送频道消息。所有加入频道的用户都会收到该频道消息。发送消息的频率上限是180次/3s。
(4)LocalInvitation类:由主叫通过createLocalInvitation方法创建,仅供主叫调用的呼叫邀请对象。
方法:
(1)cancel:取消已发送的呼叫邀请。该方法无异步回调。
(2)send:向指定用户(被叫)发送呼叫邀请。该方法无异步回调。
(5)RemoteInvitationl类:由SDK创建仅供被叫调用的呼叫邀请对象。
方法:
(1)accept:接受来自主叫的呼叫邀请。该方法无异步回调。
(2):refuse:拒绝来自主叫的呼叫邀请。该方法无异步回调。