Room

Room

new Room()

Description:
  • 房间Room构造函数。

Example
var room = new Room(roomId);

Members

cleanupBoardByReJoinConnected

Description:
  • 重新加会成功后,应用层需要清理白板的标识,true代表要清理。 原因是服务器版本3.1.8开始,当客户端重新加会成功后,会重新下发所有之前白板相关信息包括批注,所以应用层需要先删除掉原来的白板相关界面内容,否则会重复渲染,可能会存在错位。

重新加会成功后,应用层需要清理白板的标识,true代表要清理。 原因是服务器版本3.1.8开始,当客户端重新加会成功后,会重新下发所有之前白板相关信息包括批注,所以应用层需要先删除掉原来的白板相关界面内容,否则会重复渲染,可能会存在错位。

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.downloadPacketLostRate  下载数据包丢包率
               roomConnection.uploadPacketLostRate   上传数据包丢包率

               roomConnection.currentRoundTripTime   当前的往返时间(RTT)
               roomConnection.totalRoundTripTime     累计的往返时间(RTT)

               //某路音频相关
               var audioConnection = connectionIndicator.getAudioConnection(userId);
               audioConnection.downloadBitrate   音频下载流量
               audioConnection.uploadBitrate     音频上传流量

               audioConnection.downloadPacket   音频下载数据包
               audioConnection.uploadPacket     音频上传数据包

               audioConnection.packetsLost     音频数据包丢包数
               audioConnection.packetLostRate  音频数据包丢包率

               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.packetLostRate  视频数据包丢包率

               videoConnection.resolution     分辨率
               videoConnection.frameRate      帧率

               videoConnection.qpSum           媒体数据包的总量化值(qpSum
               videoConnection.framesEncoded   已编码帧的数量 
               videoConnection.framesDecoded   已解码帧的数量
               videoConnection.perFrameQP      每个视频帧的平均量化值(perFrameQP)

               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.packetLostRate   桌面共享数据包丢包率

               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

房间状态枚举