new Room()
- Description:
房间Room构造函数。
Example
var room = new Room(roomId);
Methods
addCallback(type, callback)
- Description:
房间级别的回调
Example
room.addCallback(RoomCallback.connection_status, onConnectionStatus);
room.addCallback(RoomCallback.connection_indicator,onConnectionIndicator);
room.addCallback(RoomCallback.room_status_notify, onRoomStatusNotify);
room.addCallback(RoomCallback.user_join_notify, onUserJoinNotify);
room.addCallback(RoomCallback.user_leave_notify, onUserLeaveNotify);
room.addCallback(RoomCallback.leave_indication, onLeaveIndication);
room.addCallback(RoomCallback.close_room_result, onCloseRoomResult);
room.addCallback(RoomCallback.close_room_notify, onCloseRoomNotify);
room.addCallback(RoomCallback.app_data_notify, onAppdataNotify);
room.addCallback(RoomCallback.user_data_notify, onUserDataNotify);
room.addCallback(RoomCallback.user_name_notify, onUserNameNotify);
room.addCallback(RoomCallback.public_message, onPublicMessage);
room.addCallback(RoomCallback.private_message, onPrivateMessage);
room.addCallback(RoomCallback.public_data, onPublicData);
room.addCallback(RoomCallback.private_data, onPrivateData);
room.addCallback(RoomCallback.screen_sharing_ended, onScreenSharingEnded);
room.addCallback(RoomCallback.outgoing_invite_status_notify, onOutgoingInviteStatusNotify);
room.addCallback(RoomCallback.room_control_change_notify, onRoomControlChangeNotify);
与服务器连接状态回调
param:status - 连接状态
function onConnectionStatus(status) {
if (status == ConnectionStatus.connecting) {
//TODO 与服务器重连中
} else if (status == ConnectionStatus.connected) {
//TODO 与服务器重连成功
} else if (status == ConnectionStatus.connectFailed) {
//TODO 与服务器重连失败,需要重新登陆
}
}
与服务器连接指示器回调
param: connectionIndicator - 连接指示器
function onConnectionIndicator(connectionIndicator){
if(connectionIndicator){
var roomConnection = connectionIndicator.getRoomConnection();
//房间级别
roomConnection.localAddress 本地地址
roomConnection.localPort 本地端口
roomConnection.localProtocol 本地协议
roomConnection.remoteAddress 远端地址
roomConnection.remotePort 远端端口
roomConnection.remoteProtocol 远端协议
roomConnection.downloadBitrate 下载流量
roomConnection.uploadBitrate 上传流量
roomConnection.downloadPacket 下载数据包
roomConnection.uploadPacket 上传数据包
roomConnection.downloadPacketLost 下载数据包丢包数
roomConnection.uploadPacketLost 上传数据包丢包数
roomConnection.downloadPacketLossRate 下载数据包丢包率
roomConnection.uploadPacketLossRate 上传数据包丢包率
//某路音频相关
var audioConnection = connectionIndicator.getAudioConnection(userId);
audioConnection.downloadBitrate 音频下载流量
audioConnection.uploadBitrate 音频上传流量
audioConnection.downloadPacket 音频下载数据包
audioConnection.uploadPacket 音频上传数据包
audioConnection.packetsLost 音频数据包丢包数
audioConnection.ssrc
audioConnection.trackId
audioConnection.payloadType
audioConnection.mimeType
audioConnection.clockRate
//某路视频相关
videoConnection = connectionIndicator.getVideoConnection(userId, cameraId);
videoConnection.downloadBitrate 视频下载流量
videoConnection.uploadBitrate 视频上传流量
videoConnection.downloadPacket 视频下载数据包
videoConnection.uploadPacket 视频传数据包
videoConnection.packetsLost 视频数据包丢包数
videoConnection.resolution 分辨率
videoConnection.frameRate 帧率
videoConnection.ssrc
videoConnection.trackId
videoConnection.payloadType
videoConnection.mimeType
videoConnection.clockRate
* //某路桌面共享相关
screenConnection = connectionIndicator.getScreenConnection(userId);
screenConnection.downloadBitrate 桌面共享下载流量
screenConnection.uploadBitrate 桌面共享上传流量
screenConnection.downloadPacket 桌面共享下载数据包
screenConnection.uploadPacket 桌面共享传数据包
screenConnection.packetsLost 桌面共享数据包丢包数
screenConnection.resolution 分辨率
screenConnection.frameRate 帧率
screenConnection.ssrc
screenConnection.trackId
screenConnection.payloadType
screenConnection.mimeType
screenConnection.clockRate
}
}
参会者加会回调
param :users - 参会者数组
function onUserJoinNotify(users) {
}
参会者退会回调
param:opt - 退会类型
param:reason - 退会原因
param:user - 退会用户
function onUserLeaveNotify(opt,reason,user) {
}
被踢出会议室
param:reason - 被踢原因
param:userId - 踢人的操作者
function onLeaveIndication(reason,userId) {
}
房间应用扩展字段回调
param {Object} key - key值
param {Object} value - value值
function onAppdataNotify(key, value) {
}
用户扩展内容更新回调
param:userData - 用户扩展内容
param:userId - 用户id
function onUserDataNotify(userData, userId ) {
}
用户修改名字回调
param {String} userName - 用户新名字
param {String} userId - 用户id
function onUserNameNotify(userName, userId){
}
公聊回调
param : Message
function onPublicMessage(Message) {
}
私聊回调
param: Message
function onPrivateMessage(Message) {
}
公有透明通道回调
param:dataArrayBuffer - DataArrayBuffer对象
param:userId - user id
function onPublicData(dataArrayBuffer, userId) {
}
私有透明通道回调
param:dataArrayBuffer - DataArrayBuffer对象
param:userId - user id
function onPrivateData(dataArrayBuffer, userId) {
}
桌面共享关闭的回调
function onScreenSharingEnded(){
}
外部设备邀请状态回调
param:type - OutgoingInviteType枚举值
param:roomId - 房间ID
param:addr - 设备地址
param:status - 邀请状态码
param:msg - 邀请返回状态
function onOutgoingInviteStatusNotify(type,roomId,addr,status,msg){
}
房间参数设置回调
param:roomControl - 参数对象
function onRoomControlChangeNotify(roomControl){
}
Parameters:
Name | Type | Description |
---|---|---|
type |
RoomCallback | 回调枚举标识 |
callback |
Object | 回调方法名,可以自定义,建议保持默认值 |
closeRoom(userId)
- Description:
关闭房间
Parameters:
Name | Type | Description |
---|---|---|
userId |
String | 关闭房间的操作用户ID |
continuousReJoin()
- Description:
多次后重新加会超时后,开启持续永久重新加会
getAppData(key) → {String}
- Description:
获得房间应用扩展字段信息
Parameters:
Name | Type | Description |
---|---|---|
key |
String | key值 |
Returns:
value- value值
- Type
- String
getMaxAttendee() → {Int}
- Description:
获取允许的最大参加会议人数
Returns:
maxAttendee - 最大参加会议人数
- Type
- Int
getMaxAudio() → {Int}
- Description:
获取允许的最大音频路数
Returns:
maxAudio - 最大音频路数
- Type
- Int
getMaxVideo() → {Int}
- Description:
获取允许的最大视频路数
Returns:
maxVideo - 最大视频路数
- Type
- Int
getOwnerId() → {String}
- Description:
获取会议建创者Id
Returns:
ownerId - 会议建创者Id
- Type
- String
getParticipants() → {Object}
- Description:
返回参会者数组
Returns:
participants -参会者数组
- Type
- Object
getPublishedCamera()
- Description:
获取房间中所有已发布的摄像头视频对象集
getPublishedCameraCount()
- Description:
获取房间中所有已发布的摄像头视频数量
getPublishedScreen()
- Description:
获取房间中所有已发布的共享屏幕窗口视频对象集
getPublishedScreenCount()
- Description:
获取房间中所有已发发布的共享屏幕窗口视频数量
getRoomControl() → {Object}
- Description:
获取房间控制参数
Returns:
- roomControl 房间控制参数
- Type
- Object
getRoomId() → {String}
- Description:
获取房间号
Returns:
roomId - 房间号
- Type
- String
getRoomTopic() → {String}
- Description:
获取会议主题
Returns:
topic - 会议主题
- Type
- String
getRoomType(roomTypEnum) → {Boolean}
- Description:
会议类型判断
Parameters:
Name | Type | Description |
---|---|---|
roomTypEnum |
Enum | 传入会议类型枚举 |
Returns:
true: 是枚举对应的会议类型,false:非枚举对应的会议类型
- Type
- Boolean
getSelfUser() → {user}
- Description:
返回自己对象
Returns:
selfUser - 自己对象
- Type
- user
getSelfUserId() → {String}
- Description:
返回自己对象的Id
Returns:
userId - 自己对象的Id
- Type
- String
getUsableAudio() → {Int}
- Description:
获取音频路数的剩余可用数。
逻辑:允许的最大音频路数 - 已发布的音频路数
注:主要用于界面显示用,具体打开的限制提示时,会采用服务器端的返回号来处理
Returns:
usableAudio - 剩余可用音频路数
- Type
- Int
getUsableVideo() → {Int}
- Description:
获取视频路数的剩余可用数。
逻辑:允许的最大视频路数 - 已发布的视频路数
注:主要用于界面显示用,具体打开的限制提示时,会采用服务器端的返回号来处理
Returns:
usableVideo - 剩余可用视频路数
- Type
- Int
getUser(userId) → {Object}
- Description:
通过用户ID获取用户对象
Parameters:
Name | Type | Description |
---|---|---|
userId |
String | 用户的Id |
Returns:
user - 用户对象
- Type
- Object
getUserByUserIdAndNodeId(userId) → {Object}
- Description:
通过用户ID获取用户对象
Parameters:
Name | Type | Description |
---|---|---|
userId |
String | 用户的Id |
Returns:
user - 用户对象
- Type
- Object
hasUser(userId)
- Description:
通过用户ID,判断用户对象是否存在。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String | 用户的Id |
isMcu() → {Boolean}
- Description:
判断当前会议模式是否为MCU模式
Returns:
isMcuRoomMode - 是否为MCU模式. true: mcu模式;false:P2P模式
- Type
- Boolean
ismuteSpeaker() → {Boolean}
- Description:
获取屏蔽会议声音的当前状态
Returns:
- 屏蔽会议声音的当前状态
- Type
- Boolean
join(userId, userName, userData, password)
- Description:
加会
Parameters:
Name | Type | Description |
---|---|---|
userId |
String | 用户的Id |
userName |
String | 用户名 |
userData |
String | 用户扩展字段 |
password |
String | 会议密码 |
joinEfficient(serverURI, accessToken, userId, userName, userData, password)
- Description:
高效加会,与room.join()接口的区别是不再需要另外调用avdEngine.init()
Parameters:
Name | Type | Description |
---|---|---|
serverURI |
String | MCU服务器地址 |
accessToken |
String | 访问令牌 |
userId |
String | 用户的Id |
userName |
String | 用户名 |
userData |
String | 用户扩展字段 |
password |
String | 会议密码 |
joinWithOEM(userId, userName, userData, password)
- Description:
OEM加会
Parameters:
Name | Type | Description |
---|---|---|
userId |
Object | 用户的Id |
userName |
Object | 用户名 |
userData |
Object | 用户扩展字段 |
password |
String | 会议密码 |
kickoffUser(reason, userId)
- Description:
踢人
Parameters:
Name | Type | Description |
---|---|---|
reason |
int | 踢人原因 |
userId |
String | 被踢用户id |
leave(reason, kickoffOpt)
- Description:
退会
Parameters:
Name | Type | Description |
---|---|---|
reason |
int | 退会原因 |
kickoffOpt |
boolean | 退会类型: true:被踢退会,false:主动退会,可以不填 |
muteSpeaker()
- Description:
屏蔽会议声音
reJoin()
- Description:
重新加会
reJoinHandle()
- Description:
重新加会
sendPrivateData(dataBinary, userId)
- Description:
发送私有透明通道
Example
var dataArrayBuffer = typeConversionUtil.String2ArrayBuffer("This is an important piece of news.");
room.sendPrivateData(dataArrayBuffer,'15').then(dataSendSuccess).otherwise(dataSendError);
function dataSendSuccess(dataMsg) {
}
Parameters:
Name | Type | Description |
---|---|---|
dataBinary |
Object | - ArrayBinary类型的内容 注: ArrayBinary : 二进制数据的原始缓冲区,该缓冲区用于存储各种类型化数组的数据 |
userId |
String | 内容接受用户ID |
sendPrivateDataToUser(dataBinary, userId)
- Description:
发送私有二进制数据。与room.sendPrivateData()的区别,本方法只需要知道对方的userId,内部实现时不用知道对方的nodeId,如一些特殊useAgent的用户,是取不到nodeId的。
Example
var dataArrayBuffer = typeConversionUtil.String2ArrayBuffer("This is an important piece of news.");
room.sendPrivateDataToUser(dataArrayBuffer,'15').then(dataSendSuccess).otherwise(dataSendError);
function dataSendSuccess(dataMsg) {
}
Parameters:
Name | Type | Description |
---|---|---|
dataBinary |
Object | ArrayBinary类型的内容 注: ArrayBinary : 二进制数据的原始缓冲区,该缓冲区用于存储各种类型化数组的数据 |
userId |
String | 内容接受用户ID |
sendPrivateMessage(message, userId)
- Description:
发送私聊消息
Parameters:
Name | Type | Description |
---|---|---|
message |
String | 消息内容 |
userId |
String | 消息接受用户ID |
sendPublicData(dataBinary)
- Description:
发送公有透明通道
Example
var dataArrayBuffer = typeConversionUtil.String2ArrayBuffer("This is an important piece of news.");
room.sendPublicData(dataArrayBuffer).then(dataSendSuccess).otherwise(dataSendError);
function dataSendSuccess(dataMsg) {
}
Parameters:
Name | Type | Description |
---|---|---|
dataBinary |
Object | - ArrayBinary类型的内容 注: ArrayBinary : 二进制数据的原始缓冲区,该缓冲区用于存储各种类型化数组的数据 |
sendPublicMessage(message)
- Description:
发送公聊消息
Parameters:
Name | Type | Description |
---|---|---|
message |
String | 消息内容 |
setCameraResolutionOrFrameRate(cameraId, resolution, frameRate, resolutionSetType-, aspectRatio-)
- Description:
设置摄像头分辨率或帧率
Parameters:
Name | Type | Description |
---|---|---|
cameraId |
String | 摄摄像头ID |
resolution |
String | 分辨率枚举值,如 |
frameRate |
int | 帧率 |
resolutionSetType- |
Object | 分辨率设置类型,可不填写,null时默认为ResolutionSetType.exact |
aspectRatio- |
Number | 分辨率宽高比(1.7777777778, 1.3333333333),可不填写(null,0时浏览器自动处理),16:9或4:3时会开启强制 |
setCameraResolutionWHOrFrameRate(cameraId, resolutionWidth, resolutionHeight, frameRate, resolutionSetType-, aspectRatio-)
- Description:
设置摄像头分辨率或帧率
Parameters:
Name | Type | Description |
---|---|---|
cameraId |
String | 摄摄像头ID |
resolutionWidth |
int | 分辨率宽 |
resolutionHeight |
int | 分辨率高 |
frameRate |
int | 帧率 |
resolutionSetType- |
Object | 分辨率设置类型,可不填写,null时默认为ResolutionSetType.exact |
aspectRatio- |
Number | 分辨率宽高比(1.7777777778, 1.3333333333),可不填写(null,0时浏览器自动处理),16:9或4:3时会开启强制 |
setReconnectMaxTimes(count)
- Description:
设置信令重连最大次数,默认3次
Example
room.setReconnectMaxTimes(5);
Parameters:
Name | Type | Description |
---|---|---|
count |
Int | 重连最大次数 |
setReconnectTimeout(timeout)
- Description:
设置信令重连最时时长,单元毫秒,默认15000毫秒
Example
room.setReconnectTimeout(20000);
Parameters:
Name | Type | Description |
---|---|---|
timeout |
Int | 重连最时时长 |
setRejoinInterval(rejoinInterval)
- Description:
设置二次重新加会之间间隔的时长
Parameters:
Name | Type | Description |
---|---|---|
rejoinInterval |
Number | 单位ms,默认3000(3秒) |
setRejoinTimeout(rejoinTimeout)
- Description:
设置重新加会的超时时间
Parameters:
Name | Type | Description |
---|---|---|
rejoinTimeout |
Number | 单位ms,默认60000(60秒),请传入大于60000的值 |
setRoomControl(attributes)
- Description:
设置房间控制参数(参数为JSON格式字符串)
Example
var attributes = '{
'record': 0,
'mix_record' : 0,
'avc_model': 0,
'resolution': '640*480',
'liver'': 0,
'mixer_live: 0
}";
room.setRoomControl(attributes);
Parameters:
Name | Type | Description |
---|---|---|
attributes |
String | 房间控制参数(JSON格式字符串) |
setSpeakerDevice(deviceId, audioElements)
- Description:
设置音频播放设备扬声器
Parameters:
Name | Type | Description |
---|---|---|
deviceId |
Object | 扬声器设备ID |
audioElements |
Object | audio控件对象集,可以不填,不填时自动获取页面上的所有audio控件对象 |
setSpeakerVolume(volume, audioElements)
- Description:
设置扬声器音量大小
Parameters:
Name | Type | Description |
---|---|---|
volume |
int | 音量值,范围0-1,如0.5表示设置音量为50%。 注:该值只是应用层的设置值与物理设备的具体音量值无关 |
audioElements |
Object | audio控件对象集,可以不填,不填时自动获取页面上的所有audio控件对象 |
setUserAgent(userAgent)
- Description:
设置当前登陆用户的userAgent属性,默认为USER_AGENT_AVD_DEFAULT
Example
room.setUserAgent(USER_AGENT_AVD_MEDIA_MIXER_ADMIN);
Parameters:
Name | Type | Description |
---|---|---|
userAgent |
String |
unmuteSpeaker()
- Description:
取消屏蔽会议声音
updateAppData(key, value)
- Description:
更新房间应用扩展字段
Parameters:
Name | Type | Description |
---|---|---|
key |
String | - key值 |
value |
String | - value值 |
updateRoomStatus(roomStatus)
- Description:
修改会议房间状态
Parameters:
Name | Type | Description |
---|---|---|
roomStatus |
Enum | 房间状态枚举 |