Class: Room

Room


new Room()

房间Room构造函数。

Example
var room = new Room(roomId);

Methods


addCallback(type, callback)

房间级别的回调

Parameters:
Name Type Description
type RoomCallback

回调枚举标识

callback Object

回调方法名,可以自定义,建议保持默认值

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){

}

closeRoom(userId)

关闭房间

Parameters:
Name Type Description
userId String

关闭房间的操作用户ID


continuousReJoin()

多次后重新加会超时后,开启持续永久重新加会


getAppData(key)

获得房间应用扩展字段信息

Parameters:
Name Type Description
key String

key值

Returns:

value- value值

Type
String

getMaxAttendee()

获取允许的最大参加会议人数

Returns:

maxAttendee - 最大参加会议人数

Type
Int

getMaxAudio()

获取允许的最大音频路数

Returns:

maxAudio - 最大音频路数

Type
Int

getMaxVideo()

获取允许的最大视频路数

Returns:

maxVideo - 最大视频路数

Type
Int

getOwnerId()

获取会议建创者Id

Returns:

ownerId - 会议建创者Id

Type
String

getParticipants()

返回参会者数组

Returns:

participants -参会者数组

Type
Object

getPublishedCamera()

获取房间中所有已发布的摄像头视频对象集


getPublishedCameraCount()

获取房间中所有已发布的摄像头视频数量


getPublishedScreen()

获取房间中所有已发布的共享屏幕窗口视频对象集


getPublishedScreenCount()

获取房间中所有已发发布的共享屏幕窗口视频数量


getRoomControl()

获取房间控制参数

Returns:
  • roomControl 房间控制参数
Type
Object

getRoomId()

获取房间号

Returns:

roomId - 房间号

Type
String

getRoomTopic()

获取会议主题

Returns:

topic - 会议主题

Type
String

getRoomType(roomTypEnum)

会议类型判断

Parameters:
Name Type Description
roomTypEnum Enum

传入会议类型枚举

Returns:

true: 是枚举对应的会议类型,false:非枚举对应的会议类型

Type
Boolean

getSelfUser()

返回自己对象

Returns:

selfUser - 自己对象

Type
user

getSelfUserId()

返回自己对象的Id

Returns:

userId - 自己对象的Id

Type
String

getUsableAudio()

获取音频路数的剩余可用数。

逻辑:允许的最大音频路数 - 已发布的音频路数

注:主要用于界面显示用,具体打开的限制提示时,会采用服务器端的返回号来处理

Returns:

usableAudio - 剩余可用音频路数

Type
Int

getUsableVideo()

获取视频路数的剩余可用数。

逻辑:允许的最大视频路数 - 已发布的视频路数

注:主要用于界面显示用,具体打开的限制提示时,会采用服务器端的返回号来处理

Returns:

usableVideo - 剩余可用视频路数

Type
Int

getUser(userId)

通过用户ID获取用户对象

Parameters:
Name Type Description
userId String

用户的Id

Returns:

user - 用户对象

Type
Object

getUserByUserIdAndNodeId(userId)

通过用户ID获取用户对象

Parameters:
Name Type Description
userId String

用户的Id

Returns:

user - 用户对象

Type
Object

hasUser(userId)

通过用户ID,判断用户对象是否存在。

Parameters:
Name Type Description
userId String

用户的Id


isMcu()

判断当前会议模式是否为MCU模式

Returns:

isMcuRoomMode - 是否为MCU模式. true: mcu模式;false:P2P模式

Type
Boolean

ismuteSpeaker()

获取屏蔽会议声音的当前状态

Returns:
  • 屏蔽会议声音的当前状态
Type
Boolean

join(userId, userName, userData, password, isUseCascade)

加会

Parameters:
Name Type Description
userId String

用户的Id

userName String

用户名

userData String

用户扩展字段

password String

会议密码

isUseCascade Boolean

是否级联加入会议,可以不传,默认为false


joinWithOEM(userId, userName, userData, password)

OEM加会

Parameters:
Name Type Description
userId Object

用户的Id

userName Object

用户名

userData Object

用户扩展字段

password String

会议密码


kickoffUser(reason, userId)

踢人

Parameters:
Name Type Description
reason int

踢人原因

userId String

被踢用户id


leave(reason, kickoffOpt)

退会

Parameters:
Name Type Description
reason int

退会原因

kickoffOpt boolean

退会类型: true:被踢退会,false:主动退会,可以不填


localICERestart()

本地网络变化,ICE重新启动.如:从WIFI切换到有线


muteSpeaker()

屏蔽会议声音


reJoin()

重新加会


remoteICERestart(iceRestartMsg)

远端candidate更新,ICE重新启动

Parameters:
Name Type Description
iceRestartMsg Object

远端下发的ice restart candidate


sendPrivateData(dataBinary, userId)

发送私有透明通送

Parameters:
Name Type Description
dataBinary Object

- ArrayBinary类型的内容

注: ArrayBinary : 二进制数据的原始缓冲区,该缓冲区用于存储各种类型化数组的数据

userId String

内容接受用户ID

Example
var dataArrayBuffer = typeConversionUtil.String2ArrayBuffer("This is an important piece of news.");
room.sendPrivateData(dataArrayBuffer,'15').then(dataSendSuccess).otherwise(dataSendError);
function dataSendSuccess(dataMsg) {
}

sendPrivateMessage(message, userId)

发送私聊消息

Parameters:
Name Type Description
message String

消息内容

userId String

消息接受用户ID


sendPublicData(dataBinary)

发送公有透明通送

Parameters:
Name Type Description
dataBinary Object

- ArrayBinary类型的内容

注: ArrayBinary : 二进制数据的原始缓冲区,该缓冲区用于存储各种类型化数组的数据

Example
var dataArrayBuffer = typeConversionUtil.String2ArrayBuffer("This is an important piece of news.");
room.sendPublicData(dataArrayBuffer).then(dataSendSuccess).otherwise(dataSendError);
function dataSendSuccess(dataMsg) {
}

sendPublicMessage(message)

发送公聊消息

Parameters:
Name Type Description
message String

消息内容


setCameraResolutionOrFrameRate(cameraId, resolution, frameRate, resolutionSetType-, aspectRatio-)

设置摄像头分辨率或帧率

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-)

设置摄像头分辨率或帧率

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时会开启强制


setRoomControl(attributes)

设置房间控制参数(参数为JSON格式字符串)

Parameters:
Name Type Description
attributes String

房间控制参数(JSON格式字符串)

Example
var attributes = '{
	     'record': 0, 
		 'mix_record' : 0, 
		 'avc_model': 0, 
		 'resolution': '640*480', 
		 'liver'': 0,
		 'mixer_live: 0
 }";
 room.setRoomControl(attributes);

setUserAgent(userAgent)

设置当前登陆用户的userAgent属性,默认为USER_AGENT_AVD_DEFAULT

Parameters:
Name Type Description
userAgent String
Example
room.setUserAgent(USER_AGENT_AVD_MEDIA_MIXER_ADMIN);

unmuteSpeaker()

取消屏蔽会议声音


updateAppData(key, value)

更新房间应用扩展字段

Parameters:
Name Type Description
key String

- key值

value String

- value值


updateRoomStatus(roomStatus)

修改会议房间状态

Parameters:
Name Type Description
roomStatus Enum

房间状态枚举