Javascript SDK参考 官网开发者

产品介绍    

简介

微吼Javascript SDK为WEB端提供了直播和点播功能的集成服务,除支持基础的直播和点播功能外,还融合了如聊天、问答等丰富的互动服务,为用户提供了简单、快速、功能全面、稳定的视频服务。 温馨提示:
1、请不要将单视频嵌入和JSSDK混用,否则并发将被统计为双倍。
2、请不要将JSSDK嵌入到您的小程序中。由于小程序域名审核严格,将会导致JSSDK内部部分请求无通过,无法保证稳定运行。

分类 功能 描述
聊天 观看端聊天 支持在直播时聊天和观看回放时聊天
问答 观看端问答 支持观看直播时提问和收取问答
视频 观看端视频 支持移动端和PC端观看直播视频和回放视频
文档 观看端文档 支持移动端和PC端观看文档演示(移动端不支持文档笔触信息)
点播 视频文件上传 支持单视频上传、显示文件名称、断点续传功能、上传进度条和百分比、视频不同格式上传和准备、上传中、成功及错误反馈状态
签到 观看端签到 支持用户观看直播时签到的功能
公告 观看端公告 支持观看端显示公告消息以及查看历史公告
消息 自定义消息类型 支持针对不同的消息类型进行了区分设计,观众在提交消息时会带上指定的消息类型,其他观众在接收到消息时会根据消息类型展示不同的效果。
问卷 观看端问卷 flash活动问卷需要用户自行处理UI,发送问卷答案,H5活动sdk集成问卷UI。H5和flash同时支持发送问卷消息响应
抽奖 观看端抽奖 支持直播时抽奖消息响应,及发送中间人信息
跑马灯 观看端播放器跑马灯 观看端支持“跑马灯”功能,防录屏。需控制台开启,并设置跑马灯功能
水印 观看端播放器水印 观看端支持“水印”。需控制台开启,并设置水印功能

点播上传支持格式

上传格式 用途
rmvb, mp4, avi, wmv, mkv, flv, mp3, wav, mov 点播

播放支持格式

播放格式 用途 PC浏览器 移动端浏览器
RTMP 直播 支持 支持
MP4 点播/回看 支持 支持
HLS(M3U8) 点播/回看 支持 支持

浏览器支持

为保证点播SDK能够正常使用请尽量在高版本浏览器下使用本SDK产品(Chrome58及以上版本)

接入流程    

接入步骤

1、联系客户经理开通权限[立即沟通权限申请],或400-888-9970电话立即沟通申请

2、获取API/SDK的使用权限信息,得到Acess key点击查看

3、依照文档进行功能接入

Access Key

权限申请通过后,用户可在http://e.vhall.com/home/vhallapi/authlist 页面获取appKey 、secretKey和AppSecretKey。 说明:

appkey: 用于标识客户身份,在网络请求中会以某种形式传输

secretkey: 作为私钥形式存储于客户方本地, 不在网络传递,它的作用是对客户方发起的请求进行数字签名,保证该请求是来自指定客户的请求,并且是合法的有效的。

AppSecretKey:用于SDK,使用方式同secretkey

直播SDK3.0    

快速开始    

引入微吼直播SAAS jssdk


<script src="//cnstatic01.e.vhall.com/jssdk/dist/3.0.7/VhallSDK.js"></script>

同时支持 http, https 协议

初始化 微吼SDK


var vhallSDK = new VhallSDK({
    app_key: '123123asdasdcas34dfsJsadXV', // APP Key
    signedat: getQueryString('signedat'), // 用户签名时间
    sign: '123123asdasdcas34dfsJsadXV', // 服务器签名
    roomid: 房间id, // 直播,回放,点播等房间ID
    account: 12312, // 用户参会id
    email: getQueryString('email'), // 可选 - 用户邮箱
    username: vhall, // 用户昵称
    videoContent: '#video', // 播放器dom 节点ID
    docContent: '#docWrap', // 文档展示dom 节点id
    questionarieContainer: '#questionWrap', // 问卷dom 容器ID
    plugins: [ 'chat', 'doc', 'player', 'interactTools'], // SDk 功能列表 ,必须全选
    x5_video_fullscreen: true, // 非必填,启用腾讯H5全屏方式 true开启 false关闭 ,默认false
    x5_video_type: true // //非必填,启用腾讯H5同层播放器 true开启 false关闭 ,默认false
})


SDK 初始化参数说明

参数 类型 说明 是否必填 备注
app_key String 微吼直播开放平台应用key 点击获取AppKey
signedat String 微吼直播JSSDK签名时间戳
sign String 微吼直播JSSDK签名时间戳 签名生成算法见下方
roomid Number、String 微吼直播活动ID
account Number 用户ID
email String 用户Email
username String 用户昵称
videoContent String 播放器Dom id 例如: #video-content
docContent String 文档区域Dom id 例如: #doc-area
questionarieContainer String 问卷容器Dom id 如: #question-id
plugins Array 微吼直播功能列表 如: [ 'chat', 'player', 'doc','interactTools']
x5_video_fullscreen Boolean 启用腾讯H5全屏方式 默认:false。 true开启 ,false关闭
x5_video_type Boolean 启用腾讯H5同层播放器 默认:false。 true开启 ,false关闭

SDK签名(sign)说明

Sign 是微吼直播JSSDK,所有功能必须参数。 作为用户使用微吼直播SDK的唯一合法凭证。 签名有效期为有一个小时。

参与签名参数

字段名称 字段说明 备注
roomid 微吼直播 活动ID
account 用户账号
username 用户昵称
app_key 微吼直播 开放平台用户应用Key 点击获取AppKey
secret_key 微吼直播 开放平台用户应用secret_key 点击获取AppKey
signedat 签名调用时的当前时间戳(精确到秒) 示例代码:

签名算法规则

规则序号 规则 备注
1 按参数名升序排列
2 将参与签名的参数 以 Key + Value 形式顺序拼接
3 在参数拼接完成后的字符串首尾各加上secret_key
4 将第三步的得到的字符串进行 md5 加密得到Sign

签名生成示例代码 PHP

<?php
$secret_key = "f145b675f441cc00dd3e55746a0f4780";
$params = [
    "roomid"=> "123456789",
    "account"=> "12345",
    "username"=> "zhangsan",
    "app_key"=> "3eb72619af748d73f7fda1e6b0c692a9",
    "signedat"=> "1484620708"
];

// 按参数名升序排列
ksort($params);

// 将键值组合
array_walk($params,function(&$value,$key){
	$value = $key . $value;
});

// 拼接,在首尾各加上$secret_key,计算MD5值
$sign = md5($secret_key . implode('',$params) . $secret_key);

// 结果形如
$sign=md5("f145b675f441cc00dd3e55746a0f4780account12345app_key3eb72619af748d73f7fda1e6b0c692a9emailzhangsan@vhall.comroomid123456789signedat1484620708usernamezhangsanf145b675f441cc00dd3e55746a0f4780");

// 计算结果
// $sign = '92eec52c58b9bddc0ba663c75a3c1f7f'; 

签名生成示例代码 Java

    String secret_key = "f145b675f441cc00dd3e55746a0f4780";
    String roomid = "123456789";
    String account = "12345";
    String username = "zhangsan";
    String app_key = "3eb72619af748d73f7fda1e6b0c692a9";
    String signedat = "1484620708";
    String email = "zhangsan@vhall.com";

    Map<String, String> paramMap = new HashMap<String, String>();
    paramMap.put("roomid",roomid);
    paramMap.put("account",account);
    paramMap.put("username",username);
    paramMap.put("app_key",app_key);
    paramMap.put("signedat",signedat);
    paramMap.put("email",email);

    String[] keyArray = paramMap.keySet().toArray(new String[0]);
    Arrays.sort(keyArray);
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append(secret_key);
    for (String key : keyArray) {
        stringBuilder.append(key).append(paramMap.get(key));
    }
    stringBuilder.append(secret_key);
    String signSource = stringBuilder.toString();
    MessageDigest md = MessageDigest.getInstance("MD5");//获取MD5实例
    md.update(signSource.getBytes());//此处传入要加密的byte类型值
    byte[] result = md.digest();//此处得到的是md5加密后的byte类型值

    StringBuilder sb = new StringBuilder(32);
    int i;
    for (int offset = 0; offset < result.length; offset++) {//做相应的转化(十六进制)
        i = result[offset];
        if (i < 0) i += 256;
        if (i < 16) sb.append("0");
        sb.append(Integer.toHexString(i));
    }
    String str_md5 = sb.toString();
    System.out.println(str_md5);

安全说明

MD5(Message Digest Algorithm )为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。该算法为单向不可逆算法。

为增加签名安全系数, 微吼直播参与签名字符串长度为130+,并为sign 设置了1小时时间时效,靠碰撞检测得出相同sign 的难度为130+的阶乘(极其耗费算力)。请各位开放平台用户放心使用。

浏览器兼容性

浏览器 版本 备注
Chrome 74版本及以上
safari 12版本及以上
FireFox 79版本及以上
edge 84 版本及以上
IE 10 版本及以上 需在项目中首先引入//cnstatic01.e.vhall.com/vhall-new-saas/static/polyfill.js?v=20201111 兼容IE10及以上版本
360 急速浏览器 全版本
手Q 内部浏览器 全版本
微信内置浏览器 全版本
其他手机浏览器 绝大部分支持 如遇问题请联系商务或邮件我们

其他未涉及浏览器可能出现兼容性问题。 问题反馈联系客服

功能模块API    

视频模块    

视频观看模块 功能API 说明

###调用方式: 在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,下 player 模块进行调用访问。

API 列表

API 名称 功能描述 参数 返回值 备注
play 自助操作 播放 null null
pause 自助操作 暂停 null null
getSpeedList 自助操作 获取当前可支持倍速列表 callBack, 类型: Function null
setSpeed 自助操作 设置播放器倍速 speed, 类型: String null 参数为 getSpeedList 方法中返回数组的倍速值。
canPlayDefinitions 自助操作 获取清晰度列表 callback, 类型:Function data, 类型:Array 回调返回当前活动可支持清晰度列表。 备注: (a:音频,same:原画)
setPlayerDefinition 自助操作 设置清晰度 definition, 类型: String null 参数为 canPlayDefinitions 方法中返回数组中的清晰度, same:代表原画, a: 代表音频
setCurrentTime 自助操作 设置回放视频时间 s, 类型:Number null 参数为设置的秒数,仅可用于回放。
setPlayerLine 设置播放线路 2.5.0 之前的API 已废止
openBarrage 自助操作 打开弹幕功能 null null 不支持Flash类型活动
sendBarrage 自助操作 发送播放器弹幕 text, 类型:String null 不支持Flash类型活动
closeBarrage 自助操作 关闭弹幕功能 null null 不支持Flash类型活动
setBarrageInfo 自助操作 设置弹幕相关信息 opt, 类型: Object null opt 示例: opt={ position: 0, alpha: 0.1, fontsize: 15 , color: ‘#ffffff’} position:位置 0上, 1中, 2下, 3全屏 ,alpha:透明度 0-1,fontsize: 字体大小 (number) ,color: 字体颜色

代码示例


var vhallSDKInstance = new VhallSDK({
... // 微吼SDK 初始化参数
})

// 自助操作 播放
vhallSDKInstance.player.play()

// 自助操作 暂停
vhallSDKInstance.player.pause()

// 自助操作 获取当前可支持倍速列表
vhallSDKInstance.player.getSpeedList((data) => {
    // data = [0.5, 1, 2]
})

// 自助操作 设置倍速
vhallSDKInstance.player.setSpeed(speed)

// 自助操作 获取清晰度列表
vhallSDKInstance.player.canPlayDefinitions(callback)

// 自助操作 设置清晰度
vhallSDKInstance.player.setPlayerDefinition(definition)

// 自助操作 设置回放视频时间
vhallSDKInstance.player.setCurrentTime(s)

// 自助操作 打开弹幕
vhallSDKInstance.player.openBarrage()

// 自助操作 关闭弹幕
vhallSDKInstance.player.closeBarrage()

// 自助操作 发送弹幕
vhallSDKInstance.player.sendBarrage(text)

// 自助操作 设置弹幕样式
vhallSDKInstance.player.setBarrageInfo(opt)


文档模块    

文档模块 功能API 说明

###调用方式: 在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,下 doc 模块进行调用访问。

API 名称 功能示意 参数 返回值 备注
zoomIn 自助操作 文档放大 null null 不支持Flash 活动
zoomOut 自助操作 文档缩小 null null 不支持Flash 活动
docReset 恢复文档原始大小和位置 null null 不支持Flash 活动
nextPage 翻页 下一页 null null 不支持Flash 活动
prevPage 自助翻页 上一页 null null 不支持Flash 活动
docMove 自助操作 文档移动 null null 不支持Flash 活动

代码示例


var vhallSDKInstance = new VhallSDK({
    ... // 微吼SDK 初始化参数
})

// H5文档缩小
vhallSDKInstance.doc.zoomIn()

// 文档缩小
vhallSDKInstance.doc.zoomOut()

// 文档重置大小
vhallSDKInstance.doc.docReset()
             
 // 文档下一页
 vhallSDKInstance.doc.nextPage()

 // 文档上一页
 vhallSDKInstance.doc.prevPage()

// 文档移动
 vhallSDKInstance.doc.docMove()

聊天模块    

聊天模块 功能API 说明

调用方式: 在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,下 chat 模块进行调用访问。

API 名称 功能描述 参数 返回值 备注
sendChat 自助操作 发送聊天消息 msg, 类型:String null 聊天内容, 最多140字符
sendCustomEvent 自助操作 发送自定义聊天消息 msg, 类型:Object null 自定义消息对象, {type: '自定义消息类型', data:{ name: '自定义消息数据'}}
vhall_get_live_history_chat_msg 自助操作 获取直播聊天历史记录 opt, 类型:Object null 参数为查询参数, {currPage:1, pageSize:50, startTime: '2020/07/13', endTime: '2020/07/15'} 返回primise。出于性能考虑,目前只支持返回最新50条聊天消息内容。
注意:3.0.0至3.0.4版本采用当前对象传参
vhall_get_live_history_chat_msg 自助操作 获取直播聊天历史记录 opt, 类型:Number null 参数为查询页码,且每分页固定返回50条数据。
注意:从3.0.5版本起仅支持通过页码,查询分页数据
vhall_get_record_history_chat_msg 自助操作 获取直播聊天历史记录 page, 类型:Number null 参数为查询页码。
注意:从3.0.5版本起不在支持此方法,统一使用vhall_get_live_history_chat_msg方法获取历史聊天数据
destroy 自助操作 销毁聊天SDK、播放器SDk
代码示例
 
 var vhallSDKInstance = new VhallSDK({
    ... // 微吼SDK 初始化参数
 })

 // 自助操作 发送聊天消息
 vhallSDKInstance.chat.sendChat(msg)

 // 自助操作 发送自定义聊天消息
 vhallSDKInstance.chat.sendCustomEvent(msg)
 
 // 自助操作 获取直播聊天历史记录
 vhallSDKInstance.vhall_get_live_history_chat_msg(opt)

 // 自助操作 回放拉取历史聊天记录
 vhallSDKInstance.chat.vhall_get_record_history_chat_msg(page)
 
 // 自助操作 销毁播放器和文档SDK
 vhallSDKInstance.chat.destroy()

互动工具模块    

互动工具模块 功能API 说明

调用方式: 在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,模块进行调用访问。

API 名称 功能描述 参数 返回值 备注
sendQuestion 自助操作 发送问答提问内容 text, 类型:String null 提问内容
sendSign 自助操作 签到 sign_id, 类型:String null 在参与签到消息监听事件'startSign'中获取sign_id
sendQuestionPagerAnswer 自助操作 发送问卷数据 opt, 类型:Object null 参数为问卷内容.例如:{"survey_id": "8102","data": {"text": {"7722": "少时诵诗书所"},"c": {"7720": {"13275": "选项1"}},"checkbox": {"7721": {"13277": "选项1","13278": "选2"}},"select": {"7723": "19,1188"}}} survey_id问卷id。仅flash类型活动使用
sendLotteryInfo 自助操作 发送中奖信息 opt, 类型:Object null 提交中奖人信息,业务层做校验。例如:{ lottery_id:'抽奖id', name:'中奖人姓名',phone:'手机号', remarks:’备注’ }
vhall_get_live_history_question_msg 自助操作 获取直播问答记录 null promise
vhall_get_history_question_msg 自助操作 获取回放问答记录 null promise
vhall_get_history_notice 自助操作 获取历史公告记录 page, 类型:Number promise
queryQuestionList 自助操作 获取问卷数据 id, 类型:String promise 问卷id,** 仅Flash类型活动可用**。通过消息监听事件'questionnaire_push'获取问卷id
代码示例
 
 var vhallSDKInstance = new VhallSDK({
 	... // 微吼SDK 初始化参数
 })
 
 // 自助操作 问答问题发送
 vhallSDKInstance.sendQuestion(text)

 // 自助操作 签到
 vhallSDKInstance.sendSign(sign_id)

 // 自助操作 发送问卷数据
 vhallSDKInstance.sendQuestionPagerAnswer(opt)
 
 // 自助操作 发送中奖信息
 vhallSDKInstance.sendLotteryInfo(opt)

 // 自助操作 获取直播问答记录
 vhallSDKInstance.vhall_get_live_history_question_msg().then(res => {}).catch(e => {})

  // 自助操作 获取回放问答记录
 vhallSDKInstance.vhall_get_history_question_msg().then(res => {}).catch(e => {})

 // 自助操作 获取历史公告记录
 vhallSDKInstance.vhall_get_history_notice(page).then(res => {}).catch(e => {})

 // 自助操作 获取问卷数据
 vhallSDKInstance.queryQuestionList(id).then(res => {}).catch(e => {})

房间信息服务模块    

房间信息 功能API 说明

调用方式:

在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,进行调用访问。

API 名称 功能描述 参数 返回值 备注
getRoominfo 自助操作 获取当前活动状态 null promise
getUserinfo 自助操作 获取当前用户参会信息 null promise {avatar: '',dataToken: '',forbidchat: 1, is_gag : 1, is_kickout : 1, nick_name : '', role: 'user', userId : '', vss : Object} 备注:forbidchat:全体禁言(仅flash可用),1:开启,0:关闭。 is_gag:是否被禁言,1:禁言,0:未禁言。is_kickout: 是否被踢出,1:踢出,0:未踢出。role: 角色,user:观众,host:主持,guest:嘉宾,assistant:助理
updateUserInfo 自助操作 更新用户昵称 name, 类型:String promise 参数长度小于30

代码示例


    var vhallSDKInstance = new VhallSDK({
        ... // 微吼SDK 初始化参数
    })
	
    // 自助操作 获取当前活动状态
    vhallSDKInstance.getRoominfo().then(res => {}).catch(e => {})
	
    // 自助操作 获取当前用户参会信息
    vhallSDKInstance.getUserinfo().then(res => {}).catch(e => {})
	
    // 自助操作 更新用户昵称
    vhallSDKInstance.updateUserInfo(name)

全局事件消息列表    

全局事件说明

调用方式:

在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,用$on方法进行使用。

事件 名称 功能描述 参数 返回值 备注
ready 初始化完成 null null
playerReady 播放器初始化成功 null null
streamOver Flash 类型活动,直播结束 null null 仅Flash 类型活动会派发此事件
publishStart Flash 类型活动,直播开始事件 null null 仅Flash 类型活动会派发此事件
live_start H5类型活动 ,直播开始事件 null null 仅H5 类型活动会派发此事件
live_over H5类型活动 ,直播结束事件 null null 仅H5 类型活动会派发此事件
userOnline 用户上线通知 callback(datat), 类型:Function data,类型:Object data.data = {hide: false,socket_id: "1TBpcjxU2mf2ye6vDy-r",type: "Join"}
userOffline 用户离线通知 callback(data), 类型:Function data,类型:Object data.data = {hide: false,socket_id: "94TPRGTW4LFT2KstDy-V",type: "Leave"}
chatMsg 聊天消息监听 callback(data), 类型:Function data,类型:Object 返回消息体
sendCustomEvent 发送自定义消息监听 callback(data), 类型:Function data,类型:Object 返回消息体
customEvent 自定义广播消息监听 callback(data), 类型:Function data,类型:Object 返回消息体
question_answer_open 开启问答 callback(data), 类型:Function data,类型:Object data.data = {nick_name: '主持人',type: 'question_answer_open' }
question_answer_close 关闭问答 callback(data) , 类型:Function data,类型:Object data.data = {nick_name: '主持人',type: 'question_answer_close' }
question_answer_commit 主讲人回复问答消息 callback(data) , 类型:Function data,类型:Object 主讲人回复消息
question_answer_backout 主讲人撤回问答回复 callback(data) , 类型:Function data,类型:Object data.data = {question_answer_id: "4137",type: "question_answer_backout"}
startSign 开始签到环节 callback(data) , 类型:Function data,类型:Object data.data = {room_id:"lss_32f5a298",sign_creator_avatar: "//a.com/15.jpeg",sign_creator_id:"16420899",sign_creator_nickname: "Batur",sign_id: "19061",sign_show_time: "30",type: "sign_in_push"}
sendSign 签到 callback(data), 类型:Function data,类型:Object data = {code:200}
questionnaire_push 打开问卷消息 callback(data), 类型:Function data,类型:Object data.data = {nick_name: "Batur",questionnaire_id: "271631",room_join_id: "16420899",room_role: "1",type: "questionnaire_push"} questionnaire_id:问卷id room_role:房间角色 1主持人 2观众 3嘉宾 4助理
questionarie_submit_success 问卷提交成功 callback(data), 类型:Function data,类型:Object data.data = {naire_id: 问卷id}
questionarie_submit_error 问卷服务提交失败 callback(data), 类型:Function data,类型:Object 返回错误信息error
questionPagerList 获取问卷列表 null null 返回问卷数据data
lotteryStart 开始抽奖 callback(data), 类型:Function data,类型:Object data.data = {lottery_creator_avatar: "//ll.com/upload/15.jpeg",lottery_creator_id: "16420899",lottery_creator_nickname: "Batur",lottery_id: "6904",lottery_number: "1",lottery_status: 0,lottery_type: "1",room_id: "lss_32f5a298",type: "lottery_push"}lottery_id:奖品id,lottery_number:中奖人数lotteryResultNotice 结束抽奖 null callback(datat), 类型:Function data.data = ["lottery_winners" : []] 返回中间人数组
disadbleChat 禁言 callback(datat), 类型:Function data,类型:Object data.data = {nick_name: "dazhen" ,role_name: "2" ,room_join_id: "16420899" ,target_id: "16422570" ,type: "disable"} target_id:被禁言成员id
permitChat 恢复禁言 callback(data), 类型:Function data,类型:Object 消息体说明:{data: {target_id: "16422570", type: "permit"} }target_id: 取消禁言成员id
forbidChat 全体禁言 callback(data), 类型:Function data,类型:Object data.data = {allStatus: 1} allStatus:1为全员禁言,0为恢复全员禁言
kickoutrestore 恢复踢出 null null
kickout 踢出 callback(data), 类型:Function data,类型:Object data.data = {role_name: "2", room_join_id: "16420899", target_id: "16422570", type: "room_kickout"} target_id: 踢出id
room_announcement 收到公告消息 callback(data), 类型:Function data,类型:Object 返回数据
UpdateUser 更新用户信息 null null
hostNotice 主持人下线消息 null null
error 错误日志 null callback(data),类型:Object 返回 {msg, data} msg是错误提示信息, data是错误消息体包含code,msg,data信息

代码示例


var vhallSDKInstance = new VhallSDK({
... // 微吼SDK 初始化参数
})
// 播放器初始化成功
vhallSDKInstance.$on('ready', () => {
})
// 播放器初始化成功
vhallSDKInstance.$on('playerReady', () => {
})
// 直播停止推流
vhallSDKInstance.$on('streamOver', () => {
})
// 直播开始推流
vhallSDKInstance.$on('publishStart', () => {
})
// H5直播开始事件
vhallSDKInstance.$on('live_start', () => {
})
// H5直播结束事件
vhallSDKInstance.$on('live_over', () => {
})
// 用户上线通知
vhallSDKInstance.$on('userOnline', (data) => {
})
// 用户离线通知
vhallSDKInstance.$on('userOffline', (data) => {
})
// 聊天消息监听
vhallSDKInstance.$on('chatMsg', (data) => {
})
// 发送自定义消息监听
vhallSDKInstance.$on('sendCustomEvent', (data) => {
})
// 自定义广播消息监听
vhallSDKInstance.$on('customEvent', (data) => {
})
// 开启问答
vhallSDKInstance.$on('question_answer_open', (data) => {
})
// 关闭问答
vhallSDKInstance.$on('question_answer_close', (data) => {
})
// 主讲人回复问答消息
vhallSDKInstance.$on('question_answer_commit', (data) => {
})
// 主讲人撤回问答回复
vhallSDKInstance.$on('question_answer_backout', (data) => {
})
// 开始签到环节
vhallSDKInstance.$on('startSign', (data) => {
})
// 签到
vhallSDKInstance.$on('sendSign', (data) => {
})
// 打开问卷消息
vhallSDKInstance.$on('questionnaire_push', (data) => {
})
// 问卷提交成功
vhallSDKInstance.$on('questionarie_submit_success', (data) => {
})
// 问卷服务提交失败
vhallSDKInstance.$on('questionarie_submit_error', (error) => {
})
// 获取问卷列表
vhallSDKInstance.$on('questionPagerList', (data) => {
})
// 开始抽奖
vhallSDKInstance.$on('lotteryStart', (data) => {
})
// 结束抽奖
vhallSDKInstance.$on('lotteryResultNotice', (data) => {
})
// 禁言
vhallSDKInstance.$on('disableChat', (data) => {
})
// 恢复禁言
vhallSDKInstance.$on('permitChat', (data) => {
})
// 全体禁言1为全员禁言,0为恢复全员禁言
vhallSDKInstance.$on('forbidChat', (data) => {
})
// 恢复踢出
vhallSDKInstance.$on('kickoutrestore', () => {
})
// 踢出
vhallSDKInstance.$on('kickout', (data) => {
})
// 收到公告消息
vhallSDKInstance.$on('room_announcement', (data) => {
})
// 更新用户信息 
vhallSDKInstance.$on('UpdateUser', () => {
})
// 错误日志统一对外消息
vhallSDKInstance.$on('error', ({msg, data}) => {
})
// 主持人下线消息 
vhallSDKInstance.$on('hostNotice', () => {
})

全局错误code 列表    

VHALL_SDK客户端错误代码

使用方式

通过 VhallSDK 初始化后的,实例句柄。 增加 error 事件监听即可。

错误码 说明
10000 消息体格式不对
10001 消息体为空
10002 当前用户被禁言
10003 聊天输入不能超过140个字符
10004 当前已开启全员禁言
10005 当前活动不是直播状态
10006 当前活动未开启问答
10007 当前用户被踢出
20000 接口请求成功
20005 接口请求失败
50400 用户身份认证错误
50401 用户发送消息频次超过限制
50402 活动xxx发送消息频次超过限制
50403 自定义广播消息内容长度超过限制

示例代码

var vhallInstance = new VhasllSDK ({
xxx
})
// 监听全局错误事件
vhallInstance.$on('error', (data) => {
    console.log(data)
})

直播SDKDemo    

直播SDK Demo

访问地址:

http://cnstatic01.e.vhall.com/jssdk/dist/3.0.7/login.html

直播SDK3.0兼容旧版本升级方案    

SDK DEMO地址

访问地址: http://cnstatic01.e.vhall.com/jssdk/dist/3.0.7/login.html

访问地址登录成功后,观看地址(请注意:变更为old.html) http://cnstatic01.e.vhall.com/jssdk/dist/3.0.7/old.html?app_key=app_key&signedat=signedat&sign=sign&id=roomid&account=account&username=username

升级方案使用限制

旧版本升级方案从SDK3.0.1起开始支持,以下SDK使用方式仅适用于兼容方案中的old.html页面,用来兼容SDK3.0前版本

依赖库

本SDK依赖于JQuery库,请在需要引入JQuery的页面按以下代码示例进行引入,对JQuery版本没有要求

<script src="http://cnstatic01.e.vhall.com/3rdlibs/jquery/1.11.2/jquery.min.js" type="text/javascript"></script>

引入JS文件

在需要调用SDK的页面插入以下代码以引入JS文件:

<script type="text/javascript" src="http://cnstatic01.e.vhall.com/jssdk/dist/3.0.7/VhallSDK.js"></script>

SDK初始化

使用以下的方法和参数进行SDK的初始化以及权限的验证

VHALL_SDK.init({
	   account : '',// 必填,唯一用户id,与使用第三方创建用户接口所传的third_user_id需一致)
	   username : '',// 必填,用户昵称用以在各模块中显示
	   roomid :'',// 必填,当前聊天所在活动id
	   app_key :'',// 必填,启用服务唯一验证,API/SDK权限申请后生成
	   signedat :'',// 必填,启用服务唯一验证,unix时间戳
	   sign :'',// 必填,启用服务唯一验证,有效期一小时
	   email : '',// 非必填,当前版本已不建议使用
	   videoContent : '#videoId',// 必填,视频容器
	   docContent: '#docId',// 必填,文档容器
	   x5_video_type: false,  // 非必填,启用腾讯H5同层播放器,默认false, true为开启
	   x5_video_fullscreen: false, // 非必填,字符串,启用腾讯H5全屏方式,默认false, true为开启
	   questionarieContainer: '#test' // 非必填 问卷容器
});

注1: 签名生成规则同SDK3.0
注2: 兼容方案中SDK初始化传参取消wrapper参数,H5和Flash活动文档容器统一使用docContent字段,并使用id值为参数。
注3: 兼容方案中SDK初始化传参取消protocol参数,SDK3.0.1起根据http泛协议,可以根据地址中http/https自动切换,不再需要用户通过传参切换协议。
注4: 兼容方案中SDK初始化传参取消facedom和textdom参数,facedom是聊天输入区域中自定义表情面板容器,从SDK3.0起由用户在业务层维护,SDK不再提供支持。textdom为聊天等输入内容,从SDK3.0起聊天等输入内容由用户通过调用SDK方法时,作为参数传递给SDK。

SDK API

兼容方案中,对于SDK API的调用以及传参方式沿用SDK3.0之前版本使用方式

SDK 事件监听

兼容方案中,对于SDK 事件监听的调用方式沿用SDK3.0之前版本使用方式

直播SDK3.1    

开始    

引入微吼直播SAAS jssdk


<script src="//cnstatic01.e.vhall.com/jssdk/dist/3.1.3/VhallSDK.js"></script>

仅支持https 协议

初始化 微吼SDK


var vhallSDK = new VhallSDK({
    app_key: '123123asdasdcas34dfsJsadXV', // APP Key
    signedat: getQueryString('signedat'), // 用户签名时间
    sign: '123123asdasdcas34dfsJsadXV', // 服务器签名
    roomid: 房间id, // 直播,回放,点播等房间ID
    account: 12312, // 用户参会id
    email: getQueryString('email'), // 可选 - 用户邮箱
    username: vhall, // 用户昵称
    videoContent: '#video', // 播放器dom 节点ID
    docContent: '#docWrap', // 文档展示dom 节点id
    questionarieContainer: '#questionWrap', // 问卷dom 容器ID
    plugins: [ 'chat', 'doc', 'player', 'interactTools'], // SDk 功能列表 ,必须全选
    x5_video_fullscreen: true, // 非必填,启用腾讯H5全屏方式 true开启 false关闭 ,默认false
    x5_video_type: true // //非必填,启用腾讯H5同层播放器 true开启 false关闭 ,默认false
    password: '', // 第三方k值或观看限制密码
    record_id: '12345678', // 设置回放id
    sign_type: 0 // 验签规则 必填
})


SDK 初始化参数说明

参数 类型 说明 是否必填 备注
app_key String 微吼直播开放平台应用key 点击获取AppKey
signedat String 微吼直播JSSDK签名时间戳
sign String 微吼直播JSSDK签名时间戳 签名生成算法见下方
roomid Number、String 微吼直播活动ID
account Number 用户ID
email String 用户Email
username String 用户昵称
videoContent String 播放器Dom id 例如: #video-content
docContent String 文档区域Dom id 例如: #doc-area
questionarieContainer String 问卷容器Dom id 如: #question-id
plugins Array 微吼直播功能列表 如: [ 'chat', 'player', 'doc','interactTools']
x5_video_fullscreen Boolean 启用腾讯H5全屏方式 默认:false。 true开启 ,false关闭
x5_video_type Boolean 启用腾讯H5同层播放器 默认:false。 true开启 ,false关闭
password String 第三方k值或观看限制密码(新增)
record_id String 设置回放id(新增) 优先级最高,设置record_id后即使房间在直播状态,也会优先播放record_id对应的回放
sign_type Number 验签规则切换(新增) 默认:0。 0: MD5 1:RSA

SDK签名(sign)说明

Sign 是微吼直播JSSDK,所有功能必须参数。 作为用户使用微吼直播SDK的唯一合法凭证。3.1版本开始支持两种验签规则分别为MD5和RSA两种方式。对应初始化JSSDK时,需要根据不同规则赋值sign_type 来驱动JSSDK使用

签名方式一 (MD5签名方式)

参与签名参数

字段名称 字段说明 备注
roomid 微吼直播 活动ID
account 用户账号
username 用户昵称
app_key 微吼直播 开放平台用户应用Key 点击获取AppKey
secret_key 微吼直播 开放平台用户应用secret_key 点击获取AppKey
signedat 签名调用时的当前时间戳(精确到秒) 示例代码:

签名算法规则

规则序号 规则 备注
1 按参数名升序排列
2 将参与签名的参数 以 Key + Value 形式顺序拼接
3 在参数拼接完成后的字符串首尾各加上secret_key
4 将第三步的得到的字符串进行 md5 加密得到Sign

签名生成示例代码 PHP

<?php
$secret_key = "f145b675f441cc00dd3e55746a0f4780";
$params = [
    "roomid"=> "123456789",
    "account"=> "12345",
    "username"=> "zhangsan",
    "app_key"=> "3eb72619af748d73f7fda1e6b0c692a9",
    "signedat"=> "1484620708"
];

// 按参数名升序排列
ksort($params);

// 将键值组合
array_walk($params,function(&$value,$key){
	$value = $key . $value;
});

// 拼接,在首尾各加上$secret_key,计算MD5值
$sign = md5($secret_key . implode('',$params) . $secret_key);

// 结果形如
$sign=md5("f145b675f441cc00dd3e55746a0f4780account12345app_key3eb72619af748d73f7fda1e6b0c692a9emailzhangsan@vhall.comroomid123456789signedat1484620708usernamezhangsanf145b675f441cc00dd3e55746a0f4780");

// 计算结果
// $sign = '92eec52c58b9bddc0ba663c75a3c1f7f'; 

签名生成示例代码 Java

    String secret_key = "f145b675f441cc00dd3e55746a0f4780";
    String roomid = "123456789";
    String account = "12345";
    String username = "zhangsan";
    String app_key = "3eb72619af748d73f7fda1e6b0c692a9";
    String signedat = "1484620708";
    String email = "zhangsan@vhall.com";

    Map<String, String> paramMap = new HashMap<String, String>();
    paramMap.put("roomid",roomid);
    paramMap.put("account",account);
    paramMap.put("username",username);
    paramMap.put("app_key",app_key);
    paramMap.put("signedat",signedat);
    paramMap.put("email",email);

    String[] keyArray = paramMap.keySet().toArray(new String[0]);
    Arrays.sort(keyArray);
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append(secret_key);
    for (String key : keyArray) {
        stringBuilder.append(key).append(paramMap.get(key));
    }
    stringBuilder.append(secret_key);
    String signSource = stringBuilder.toString();
    MessageDigest md = MessageDigest.getInstance("MD5");//获取MD5实例
    md.update(signSource.getBytes());//此处传入要加密的byte类型值
    byte[] result = md.digest();//此处得到的是md5加密后的byte类型值

    StringBuilder sb = new StringBuilder(32);
    int i;
    for (int offset = 0; offset < result.length; offset++) {//做相应的转化(十六进制)
        i = result[offset];
        if (i < 0) i += 256;
        if (i < 16) sb.append("0");
        sb.append(Integer.toHexString(i));
    }
    String str_md5 = sb.toString();
    System.out.println(str_md5);

安全说明

MD5(Message Digest Algorithm )为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。该算法为单向不可逆算法。

为增加签名安全系数, 微吼直播参与签名字符串长度为130+,并为sign 设置了1小时时间时效,靠碰撞检测得出相同sign 的难度为130+的阶乘(极其耗费算力)。请各位开放平台用户放心使用。

签名方式二 (RSA签名方式)

参与签名参数

字段名称 字段说明 备注
roomid 微吼直播 活动ID
account 用户账号
username 用户昵称
app_key 微吼直播 开放平台用户应用Key 点击获取AppKey
secret_key 微吼直播 开放平台用户应用secret_key 点击获取AppKey
signedat 签名调用时的当前时间戳(精确到秒) 示例代码:

签名算法规则

规则序号 规则 备注
1 按参数名升序排列
2 将参与签名的参数 以 Key + Value 形式顺序拼接
3 将第二步的得到的字符串进行 md5 加密计算
4 用私钥将第三步的md5结果,进行RSA签名计算
5 将第四步中的结果,进行base64url_encode编码,结果作为sign值

签名生成示例代码 PHP

依赖php的comoser扩展("phpseclib/phpseclib": "2.0")

require './vendor/autoload.php';
use phpseclib\Crypt\RSA;
 
/**
 * base64url_encode
 * @param $data
 * @return string
 */
function base64url_encode($data) {
    return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
 
/**
 * base64url_decode
 * @param $data
 * @return bool|string
 */
function base64url_decode($data) {
    return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}
 
//应用信息
$app_key = 'user_app_key';
$rsa_private_key = '';
 
//参与签名数据
$params = [
	// === 公共参数 ===
	"app_key" => $app_key,
	"sign_type" => 1, //签名类型:0-MD5  1-RSA
	"signed_at" => time(),
	// === 业务接口参数 ===
	"webinar_id" => "123456",
];
 
// 按参数名升序排列
ksort($params);
// 将键值组合
array_walk($params, function (&$value, $key) {
	$value = $key . $value;
});
 
//加密
$rsa = new RSA();
$rsa->loadKey($rsa_private_key);
$rsa->setSignatureMode(RSA::ENCRYPTION_PKCS1);
$rsa->setHash('md5');
$signString = md5(implode('', $params));
$sign = base64url_encode($rsa->sign($signString));

浏览器兼容性

浏览器 版本 备注
Chrome 74版本及以上
safari 12版本及以上
FireFox 79版本及以上
edge 84 版本及以上
IE 10 版本及以上 需在项目中首先引入//cnstatic01.e.vhall.com/vhall-new-saas/static/polyfill.js?v=20201111 兼容IE10及以上版本
360 急速浏览器 全版本
手Q 内部浏览器 全版本
微信内置浏览器 全版本
微信小程序 不支持 微信小程序由于域名校验严格,推荐使用标品H5页面嵌入开发
其他手机浏览器 绝大部分支持 如遇问题请联系商务或邮件我们

其他未涉及浏览器可能出现兼容性问题。 问题反馈联系客服

功能API    

视频功能模块    

视频观看模块 功能API 说明

###调用方式: 在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,下 player 模块进行调用访问。

API 列表

API 名称 功能描述 参数 返回值 备注
play 自助操作 播放 null null
pause 自助操作 暂停 null null
getSpeedList 自助操作 获取当前可支持倍速列表 callBack, 类型: Function null
setSpeed 自助操作 设置播放器倍速 speed, 类型: String null 参数为 getSpeedList 方法中返回数组的倍速值。
canPlayDefinitions 自助操作 获取清晰度列表 callback, 类型:Function data, 类型:Array 回调返回当前活动可支持清晰度列表。 备注: (a:音频,same:原画)
setPlayerDefinition 自助操作 设置清晰度 definition, 类型: String null 参数为 canPlayDefinitions 方法中返回数组中的清晰度, same:代表原画, a: 代表音频
setCurrentTime 自助操作 设置回放视频时间 s, 类型:Number null 参数为设置的秒数,仅可用于回放。
setPlayerLine 设置播放线路 2.5.0 之前的API 已废止
openBarrage 自助操作 打开弹幕功能 null null 不支持Flash类型活动
sendBarrage 自助操作 发送播放器弹幕 text, 类型:String null 不支持Flash类型活动
closeBarrage 自助操作 关闭弹幕功能 null null 不支持Flash类型活动
setBarrageInfo 自助操作 设置弹幕相关信息 opt, 类型: Object null opt 示例: opt={ position: 0, alpha: 0.1, fontsize: 15 , color: ‘#ffffff’} position:位置 0上, 1中, 2下, 3全屏 ,alpha:透明度 0-1,fontsize: 字体大小 (number) ,color: 字体颜色

代码示例


var vhallSDKInstance = new VhallSDK({
... // 微吼SDK 初始化参数
})

// 自助操作 播放
vhallSDKInstance.player.play()

// 自助操作 暂停
vhallSDKInstance.player.pause()

// 自助操作 获取当前可支持倍速列表
vhallSDKInstance.player.getSpeedList((data) => {
    // data = [0.5, 1, 2]
})

// 自助操作 设置倍速
vhallSDKInstance.player.setSpeed(speed)

// 自助操作 获取清晰度列表
vhallSDKInstance.player.canPlayDefinitions(callback)

// 自助操作 设置清晰度
vhallSDKInstance.player.setPlayerDefinition(definition)

// 自助操作 设置回放视频时间
vhallSDKInstance.player.setCurrentTime(s)

// 自助操作 打开弹幕
vhallSDKInstance.player.openBarrage()

// 自助操作 关闭弹幕
vhallSDKInstance.player.closeBarrage()

// 自助操作 发送弹幕
vhallSDKInstance.player.sendBarrage(text)

// 自助操作 设置弹幕样式
vhallSDKInstance.player.setBarrageInfo(opt)


文档功能模块    

文档模块 功能API 说明

###调用方式: 在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,下 doc 模块进行调用访问。

API 名称 功能示意 参数 返回值 备注
zoomIn 自助操作 文档放大 null null 不支持Flash 活动
zoomOut 自助操作 文档缩小 null null 不支持Flash 活动
docReset 恢复文档原始大小和位置 null null 不支持Flash 活动
nextPage 翻页 下一页 null null 不支持Flash 活动
prevPage 自助翻页 上一页 null null 不支持Flash 活动
docMove 自助操作 文档移动 null null 不支持Flash 活动

代码示例


var vhallSDKInstance = new VhallSDK({
    ... // 微吼SDK 初始化参数
})

// H5文档缩小
vhallSDKInstance.doc.zoomIn()

// 文档缩小
vhallSDKInstance.doc.zoomOut()

// 文档重置大小
vhallSDKInstance.doc.docReset()
             
 // 文档下一页
 vhallSDKInstance.doc.nextPage()

 // 文档上一页
 vhallSDKInstance.doc.prevPage()

// 文档移动
 vhallSDKInstance.doc.docMove()

聊天功能模块    

聊天模块 功能API 说明

调用方式: 在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,下 chat 模块进行调用访问。

API 名称 功能描述 参数 返回值 备注
sendChat 自助操作 发送聊天消息 msg, 类型:String null 聊天内容, 最多140字符
sendCustomEvent 自助操作 发送自定义聊天消息 msg, 类型:Object null 自定义消息对象, {type: '自定义消息类型', data:{ name: '自定义消息数据'}}
vhall_get_live_history_chat_msg 自助操作 获取直播聊天历史记录 opt, 类型:Number null 参数为查询页码,且每分页固定返回50条数据。
vhall_get_record_history_chat_msg 自助操作 获取直播聊天历史记录 page, 类型:Number null 参数为查询页码。
destroy 自助操作 销毁聊天SDK、播放器SDk
代码示例
 
 var vhallSDKInstance = new VhallSDK({
    ... // 微吼SDK 初始化参数
 })

 // 自助操作 发送聊天消息
 vhallSDKInstance.chat.sendChat(msg)

 // 自助操作 发送自定义聊天消息
 vhallSDKInstance.chat.sendCustomEvent(msg)
 
 // 自助操作 获取直播聊天历史记录
 vhallSDKInstance.vhall_get_live_history_chat_msg(opt)

 // 自助操作 回放拉取历史聊天记录
 vhallSDKInstance.chat.vhall_get_record_history_chat_msg(page)
 
 // 自助操作 销毁播放器和文档SDK
 vhallSDKInstance.chat.destroy()

互动功能模块    

互动工具模块 功能API 说明

调用方式: 在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,模块进行调用访问。

API 名称 功能描述 参数 返回值 备注
sendQuestion 自助操作 发送问答提问内容 text, 类型:String null 提问内容
sendSign 自助操作 签到 sign_id, 类型:String null 在参与签到消息监听事件'startSign'中获取sign_id
sendQuestionPagerAnswer 自助操作 发送问卷数据 opt, 类型:Object null 参数为问卷内容.例如:{"survey_id": "8102","data": {"text": {"7722": "少时诵诗书所"},"c": {"7720": {"13275": "选项1"}},"checkbox": {"7721": {"13277": "选项1","13278": "选2"}},"select": {"7723": "19,1188"}}} survey_id问卷id。仅flash类型活动使用
sendLotteryInfo 自助操作 发送中奖信息 opt, 类型:Object null 提交中奖人信息,业务层做校验。例如:{ lottery_id:'抽奖id', name:'中奖人姓名',phone:'手机号', remarks:’备注’ }
vhall_get_live_history_question_msg 自助操作 获取直播问答记录 null promise
vhall_get_history_question_msg 自助操作 获取回放问答记录 null promise
vhall_get_history_notice 自助操作 获取历史公告记录 page, 类型:Number promise
queryQuestionList 自助操作 获取问卷数据 id, 类型:String promise 问卷id,** 仅Flash类型活动可用**。通过消息监听事件'questionnaire_push'获取问卷id
代码示例
 
 var vhallSDKInstance = new VhallSDK({
 	... // 微吼SDK 初始化参数
 })
 
 // 自助操作 问答问题发送
 vhallSDKInstance.sendQuestion(text)

 // 自助操作 签到
 vhallSDKInstance.sendSign(sign_id)

 // 自助操作 发送问卷数据
 vhallSDKInstance.sendQuestionPagerAnswer(opt)
 
 // 自助操作 发送中奖信息
 vhallSDKInstance.sendLotteryInfo(opt)

 // 自助操作 获取直播问答记录
 vhallSDKInstance.vhall_get_live_history_question_msg().then(res => {}).catch(e => {})

  // 自助操作 获取回放问答记录
 vhallSDKInstance.vhall_get_history_question_msg().then(res => {}).catch(e => {})

 // 自助操作 获取历史公告记录
 vhallSDKInstance.vhall_get_history_notice(page).then(res => {}).catch(e => {})

 // 自助操作 获取问卷数据
 vhallSDKInstance.queryQuestionList(id).then(res => {}).catch(e => {})

房间信息模块    

房间信息 功能API 说明

调用方式:

在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,进行调用访问。

API 名称 功能描述 参数 返回值 备注
getRoominfo 自助操作 获取当前活动状态 null promise
getUserinfo 自助操作 获取当前用户参会信息 null promise {avatar: '',dataToken: '',forbidchat: 1, is_gag : 1, is_kickout : 1, nick_name : '', role: 'user', userId : '', vss : Object} 备注:forbidchat:全体禁言(仅flash可用),1:开启,0:关闭。 is_gag:是否被禁言,1:禁言,0:未禁言。is_kickout: 是否被踢出,1:踢出,0:未踢出。role: 角色,user:观众,host:主持,guest:嘉宾,assistant:助理
updateUserInfo 自助操作 更新用户昵称 name, 类型:String promise 参数长度小于30

代码示例


    var vhallSDKInstance = new VhallSDK({
        ... // 微吼SDK 初始化参数
    })
	
    // 自助操作 获取当前活动状态
    vhallSDKInstance.getRoominfo().then(res => {}).catch(e => {})
	
    // 自助操作 获取当前用户参会信息
    vhallSDKInstance.getUserinfo().then(res => {}).catch(e => {})
	
    // 自助操作 更新用户昵称
    vhallSDKInstance.updateUserInfo(name)

全局事件消息对外列表    

全局事件说明

调用方式:

在实例化,VhallSDK 之后, 用vhallSDK的实例句柄,用$on方法进行使用。

事件 名称 功能描述 参数 返回值 备注
ready 初始化完成 null null
playerReady 播放器初始化成功 null null
streamOver Flash 类型活动,直播结束 null null 仅Flash 类型活动会派发此事件
publishStart Flash 类型活动,直播开始事件 null null 仅Flash 类型活动会派发此事件
live_start H5类型活动 ,直播开始事件 null null 仅H5 类型活动会派发此事件
live_over H5类型活动 ,直播结束事件 null null 仅H5 类型活动会派发此事件
userOnline 用户上线通知 callback(datat), 类型:Function data,类型:Object data.data = {hide: false,socket_id: "1TBpcjxU2mf2ye6vDy-r",type: "Join"}
userOffline 用户离线通知 callback(data), 类型:Function data,类型:Object data.data = {hide: false,socket_id: "94TPRGTW4LFT2KstDy-V",type: "Leave"}
chatMsg 聊天消息监听 callback(data), 类型:Function data,类型:Object 返回消息体
sendCustomEvent 发送自定义消息监听 callback(data), 类型:Function data,类型:Object 返回消息体
customEvent 自定义广播消息监听 callback(data), 类型:Function data,类型:Object 返回消息体
question_answer_open 开启问答 callback(data), 类型:Function data,类型:Object data.data = {nick_name: '主持人',type: 'question_answer_open' }
question_answer_close 关闭问答 callback(data) , 类型:Function data,类型:Object data.data = {nick_name: '主持人',type: 'question_answer_close' }
question_answer_commit 主讲人回复问答消息 callback(data) , 类型:Function data,类型:Object 主讲人回复消息
question_answer_backout 主讲人撤回问答回复 callback(data) , 类型:Function data,类型:Object data.data = {question_answer_id: "4137",type: "question_answer_backout"}
startSign 开始签到环节 callback(data) , 类型:Function data,类型:Object data.data = {room_id:"lss_32f5a298",sign_creator_avatar: "//a.com/15.jpeg",sign_creator_id:"16420899",sign_creator_nickname: "Batur",sign_id: "19061",sign_show_time: "30",type: "sign_in_push"}
endSign 主持人结束签到 callback(data) , 类型:Function data,类型:Object data.data = {room_id:"lss_32f5a298",sign_creator_avatar: "//a.com/15.jpeg",sign_creator_id:"16420899",sign_creator_nickname: "Batur",sign_id: "19061",sign_show_time: "30",type: "sign_end"}
sendSign 签到 callback(data), 类型:Function data,类型:Object data = {code:200}
questionnaire_push 打开问卷消息 callback(data), 类型:Function data,类型:Object data.data = {nick_name: "Batur",questionnaire_id: "271631",room_join_id: "16420899",room_role: "1",type: "questionnaire_push"} questionnaire_id:问卷id room_role:房间角色 1主持人 2观众 3嘉宾 4助理
questionarie_submit_success 问卷提交成功 callback(data), 类型:Function data,类型:Object data.data = {naire_id: 问卷id}
questionarie_submit_error 问卷服务提交失败 callback(data), 类型:Function data,类型:Object 返回错误信息error
questionPagerList 获取问卷列表 null null 返回问卷数据data
lotteryStart 开始抽奖 callback(data), 类型:Function data,类型:Object data.data = {lottery_creator_avatar: "//ll.com/upload/15.jpeg",lottery_creator_id: "16420899",lottery_creator_nickname: "Batur",lottery_id: "6904",lottery_number: "1",lottery_status: 0,lottery_type: "1",room_id: "lss_32f5a298",type: "lottery_push"}lottery_id:奖品id,lottery_number:中奖人数lotteryResultNotice 结束抽奖 null callback(datat), 类型:Function data.data = ["lottery_winners" : []] 返回中间人数组
disadbleChat 禁言 callback(datat), 类型:Function data,类型:Object data.data = {nick_name: "dazhen" ,role_name: "2" ,room_join_id: "16420899" ,target_id: "16422570" ,type: "disable"} target_id:被禁言成员id
permitChat 恢复禁言 callback(data), 类型:Function data,类型:Object 消息体说明:{data: {target_id: "16422570", type: "permit"} }target_id: 取消禁言成员id
forbidChat 全体禁言 callback(data), 类型:Function data,类型:Object data.data = {allStatus: 1} allStatus:1为全员禁言,0为恢复全员禁言
kickoutrestore 恢复踢出 null null
kickout 踢出 callback(data), 类型:Function data,类型:Object data.data = {role_name: "2", room_join_id: "16420899", target_id: "16422570", type: "room_kickout"} target_id: 踢出id
DocOpenStatus 文档白板开关状态 callback(data), 类型:Function data,类型:String 该字段用来监听主播是否开启白板或者文档对观众展示,但不能用于判断白板和文档之前切换场景。备注:on: 开启, off: 关闭
DocAndWhiteStatus 当前开启白板/文档 callback(data), 类型:Function data,类型:String 该字段用来监听当前是显示文档还是白板,但不能用于判断白板和文档是否对用户展示的场景。备注:document: 当前开启文档, board: 当前开启白板
room_announcement 收到公告消息 callback(data), 类型:Function data,类型:Object 返回数据
UpdateUser 更新用户信息 null null
hostNotice 主持人下线消息 null null
error 错误日志 null callback(data),类型:Object 返回 {msg, data} msg是错误提示信息, data是错误消息体包含code,msg,data信息

代码示例


var vhallSDKInstance = new VhallSDK({
... // 微吼SDK 初始化参数
})
// 播放器初始化成功
vhallSDKInstance.$on('ready', () => {
})
// 播放器初始化成功
vhallSDKInstance.$on('playerReady', () => {
})
// 直播停止推流
vhallSDKInstance.$on('streamOver', () => {
})
// 直播开始推流
vhallSDKInstance.$on('publishStart', () => {
})
// H5直播开始事件
vhallSDKInstance.$on('live_start', () => {
})
// H5直播结束事件
vhallSDKInstance.$on('live_over', () => {
})
// 用户上线通知
vhallSDKInstance.$on('userOnline', (data) => {
})
// 用户离线通知
vhallSDKInstance.$on('userOffline', (data) => {
})
// 聊天消息监听
vhallSDKInstance.$on('chatMsg', (data) => {
})
// 发送自定义消息监听
vhallSDKInstance.$on('sendCustomEvent', (data) => {
})
// 自定义广播消息监听
vhallSDKInstance.$on('customEvent', (data) => {
})
// 开启问答
vhallSDKInstance.$on('question_answer_open', (data) => {
})
// 关闭问答
vhallSDKInstance.$on('question_answer_close', (data) => {
})
// 主讲人回复问答消息
vhallSDKInstance.$on('question_answer_commit', (data) => {
})
// 主讲人撤回问答回复
vhallSDKInstance.$on('question_answer_backout', (data) => {
})
// 开始签到环节
vhallSDKInstance.$on('startSign', (data) => {
})
// 签到
vhallSDKInstance.$on('sendSign', (data) => {
})
// 打开问卷消息
vhallSDKInstance.$on('questionnaire_push', (data) => {
})
// 问卷提交成功
vhallSDKInstance.$on('questionarie_submit_success', (data) => {
})
// 问卷服务提交失败
vhallSDKInstance.$on('questionarie_submit_error', (error) => {
})
// 获取问卷列表
vhallSDKInstance.$on('questionPagerList', (data) => {
})
// 开始抽奖
vhallSDKInstance.$on('lotteryStart', (data) => {
})
// 结束抽奖
vhallSDKInstance.$on('lotteryResultNotice', (data) => {
})
// 禁言
vhallSDKInstance.$on('disableChat', (data) => {
})
// 恢复禁言
vhallSDKInstance.$on('permitChat', (data) => {
})
// 全体禁言1为全员禁言,0为恢复全员禁言
vhallSDKInstance.$on('forbidChat', (data) => {
})
// 恢复踢出
vhallSDKInstance.$on('kickoutrestore', () => {
})
// 踢出
vhallSDKInstance.$on('kickout', (data) => {
})
// 开启或关闭白板文档
vhallSDKInstance.$on('DocOpenStatus', (data) => {
})
// 白板文档间切换
vhallSDKInstance.$on('DocAndWhiteStatus', (data) => {
})
// 收到公告消息
vhallSDKInstance.$on('room_announcement', (data) => {
})
// 更新用户信息 
vhallSDKInstance.$on('UpdateUser', () => {
})
// 错误日志统一对外消息
vhallSDKInstance.$on('error', ({msg, data}) => {
})
// 主持人下线消息 
vhallSDKInstance.$on('hostNotice', () => {
})

全局错误码列表    

VHALL_SDK客户端错误代码

使用方式

通过 VhallSDK 初始化后的,实例句柄。 增加 error 事件监听即可。

错误码 说明
10000 消息体格式不对
10001 消息体为空
10002 当前用户被禁言
10003 聊天输入不能超过140个字符
10004 当前已开启全员禁言
10005 当前活动不是直播状态
10006 当前活动未开启问答
10007 当前用户被踢出
20000 接口请求成功
20005 接口请求失败
50400 用户身份认证错误
50401 用户发送消息频次超过限制
50402 活动xxx发送消息频次超过限制
50403 自定义广播消息内容长度超过限制

示例代码

var vhallInstance = new VhasllSDK ({
xxx
})
// 监听全局错误事件
vhallInstance.$on('error', (data) => {
    console.log(data)
})

SDKDemo    

直播SDK Demo

访问地址:

http://cnstatic01.e.vhall.com/jssdk/dist/3.1.3/login.html

直播SDK(旧版)    

直播SDK准备    

依赖库

本SDK依赖于JQuery库,请在需要引入JQuery的页面按以下代码示例进行引入,对JQuery版本没有要求

<script src="http://cnstatic01.e.vhall.com/3rdlibs/jquery/1.11.2/jquery.min.js" type="text/javascript"></script>

引入JS文件

在需要调用SDK的页面插入以下代码以引入JS文件:

<script type="text/javascript" src="http://cnstatic01.e.vhall.com/jssdk/dist/2.6.9/VhallSDK.js"></script>

注:支持https

SDK初始化    

使用以下的方法和参数进行SDK的初始化以及权限的验证

VHALL_SDK.init({
   account : '',//必填,唯一用户id,与使用第三方创建用户接口所传的third_user_id需一致)
   username : '',//必填,用户昵称用以在各模块中显示
   roomid :'',//必填,当前聊天所在活动id
   app_key :'',//必填,启用服务唯一验证,API/SDK权限申请后生成,此参数名在1.0.0版本中为appkey,使用当前版本时请更新
   signedat :'',//必填,启用服务唯一验证,unix时间戳
   sign :'',//必填,启用服务唯一验证,有效期一小时,见下面的生成规则
   email : '',//非必填,当前版本已不建议使用
   facedom :'',//可选,当使用微吼表情时必填,呼出表情弹窗dom属性 如('#id','.class'等)
   textdom : '',//可选,当使用微吼表情时必填,插入表情文本dom属性 如('#id','.class'等)
   videoContent : '#videoId',//必填,当需要使用视频模块时,插入视频dom属性 如(flash:'#id','.class'等,  H5:只支持使用id)
   docContent: '#docId',//可选,当需要使用文档模块时,插入视频dom属性 如('#id','.class'等)
   x5_video_type: 'h5',  //非必填,启用腾讯H5同层播放器,V2.3.5及之后版本支持
   x5_video_fullscreen: 'true', //非必填,字符串,启用腾讯H5全屏方式,V2.3.5及之后版本支持
   protocol:'https', //非必填,字符串 默认自适应当前url协议,支持手动指定http和https
   wrapper:"#board-container", //H5文档播放器容器
});

注:JSSDK已支持视频播放,所以不建议再和网页嵌入混合使用,请已这样使用的用户尽快改为只使用JSSDK,且以上参数的email为空即可

使用例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        html,
        body {
            height: 100%;
        }
        .player-container {
            height: 240px;
            position: relative;
            z-index: 3;
        }
        .video {
            height: 240px;
            background: #000;
        }
        .doc {
            height: 260px;
            width: 100%;
            margin-top: 36px;
            position: absolute;
            z-index: 3;
        }
        .send-box {
            position: absolute;
            bottom: 0px;
            height: 70px;
            width: 100%;
            color: #bcbcbc;
        }
        .send-box textarea {
            height: 40px;
            width: 80%;
            resize: none;
            outline: none;
            border: none;
            padding: 10px;
            color: #bcbcbc;
            box-sizing: border-box;
            margin: 20px;
            border: solid 1px #666;
        }
        .send-box .face {
            display: inline-block;
            position: absolute;
            right: 70px;
            width: 80px;
            height: 22px;
            background-color: red;
            margin-top: 30px;
            text-align: center;
        }
        #board-container {
			height: 600px;
            margin-top: 0px
            margin-top: 20px;
            height: 260px;
            width:100%;
            z-index: 3;
            display:flex;
            align-items: center;
            justify-content: center;
        }
        #board-container.on {
            display: none;
        }
		#questionarie{
            background: white;
        }
    </style>

</head>
<body>
<div class="player-container">
    <div class="video" id="video"></div>
    <div class="doc" id="doc"></div>
	<div id="board-container">
	</div>
</div>
<div class="send-box">
    <a id='face' href="javascript:;" class="face">表情</a>
    <textarea id="mywords"></textarea>
</div>
</body>
<script src="http://cnstatic01.e.vhall.com/3rdlibs/jquery/1.11.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://cnstatic01.e.vhall.com/jssdk/dist/2.6.7/vhallSDK.js"></script>
<script>
    VHALL_SDK.init({
        account : 'xxxxxxxxxx',
        username : 'xxxxxxxxxx',
        roomid :'740034398',
        app_key :'xxxxxxxxxx',
        signedat :'1533552695000',
        sign :'a2b02bceec66r7384ba3e162a3b3c0d3e9',
        facedom :'#face',
        textdom : '#mywords',
        videoContent : '#videoId',
        docContent: '#docId',
        protocol:'https',
		wrapper:"#board-container"
    });
</script>
</html>

以下参数sign由PHP生成,其生成规则如下:

序号 规则
1 按参数名升序排列
2 然后按参数名1+参数值+参数名2+参数值拼接
3 在首尾各加上secret_key
4 计算md5作为sign

参与签名生成的字段如下:

名称 备注
roomid 活动id
account 账户
username 用户名
app_key 授权的key
signedat 时间戳

示例如下

<?php
$secret_key = "f145b675f441cc00dd3e55746a0f4780";
$params = [
    "roomid"=> "123456789",
    "account"=> "12345",
    "username"=> "zhangsan",
    "app_key"=> "3eb72619af748d73f7fda1e6b0c692a9",
    "signedat"=> "1484620708"
];
// 按参数名升序排列
ksort($params);
// 将键值组合
array_walk($params,function(&$value,$key){
	$value = $key . $value;
});
// 拼接,在首尾各加上$secret_key,计算MD5值
$sign = md5($secret_key . implode('',$params) . $secret_key);
// 结果形如
// $sign=md5("f145b675f441cc00dd3e55746a0f4780account12345app_key3eb72619af748d73f7fda1e6b0c692a9emailzhangsan@vhall.comroomid123456789signedat1484620708usernamezhangsanf145b675f441cc00dd3e55746a0f4780");
// 计算结果
// $sign = '92eec52c58b9bddc0ba663c75a3c1f7f'; //签名有效期只有一个小时

VHALL_SDK初始化时服务端返回的错误码:

错误码 说明
1001 活动不存在
1002 用户昵称不能空
1003 用户id不能空
1004 appkey不存在
1005 签名验证超时
1006 签名错误
1007 当前活动不是该appkey下所属活动
1008 超出套餐使用量
1009 该视频正在转码中
1010 该视频转码失败
1011 该视频正在审核中
1012 该视频已下线,有疑问请联系客服

*注:对上述内容中所提appkey、app_key以及secret_key三个参数的说明:

appkey和app_key均表示添加应用后所得到的AppKey列对应的值

secret_key表示添加应用后所得到的SecretKey(注意与AppSecretKey区分)列对应的值

上文中的signedat跟“API调用”中“签名机制”的signed_at 不一致,不能通用

直播调用    

获取直播功能信息

聊天和问答需要获取用户标识与头像,需提前使用第三方创建用户接口创建用户,如传入的第三方用户信息未匹配到用户标识,将自动进行创建,并默认为游客以及使用微吼的默认头像。目前聊天和问答模块只支持观看端,如需要进行管理操作(禁言、踢出、过滤以及回答等功能),请前往微吼平台上进行操作

主要调用API

tips: 蓝色标注为最新版本新增方法

API 说明 返回内容
getRoominfo() 获取当前活动状态 活动相关的状态信息,其中layout字段为直播模式2音频直播,3视频直播,4互动直播
queryRoominfo() 获取当前活动状态 和getRoominfo唯一的不同是queryRoominfo会实时请求接口或者最新信息v2.6.4开始支持
getUserinfo() 获取当前用户参会信息 用户参会的信息
player.setPlayerLine(name) playerReady之后,设置播放线路,值来自于canPlayLines事件中的msg的键 切换播放线路(2.5.0版本之后不再进行支持,程序将自动调度)
player.playSpeed(value) playerReady之后,设置播放速度value(0.5,1, 1.5, 2),1表示正常倍速度,2表示2倍速度 切换视频播放清速度(2.5.0版本之后开始支持)
player.getSpeedList() playerReady之后,获取当前可支持的倍速列表 返回数据为数组(2.5.0版本之后开始支持)
player.openBarrage() playerReady之后,打开弹幕 弹幕开关打开之后可以发送弹幕(2.5.0版本之后开始支持)
player.sendAddBarrage(text) playerReady之后,发送弹幕 text为要发送的弹幕文字(2.5.0版本之后开始支持)
player.closeBarrage() playerReady之后,关闭弹幕 弹幕开关关闭之后不可以看到弹幕(2.5.0版本之后开始支持)
player.setPlayerDefinition(name) playerReady之后,设置播放清晰度,值来自于canPlayDefinitions事件中的msg的键 切换播放器的清晰度,默认是“原画”,建议使用api切到“高清”
player.play() 视频播放方法 调用之后视频开始播放
player.pause() 暂停播放方法 调用之后视频暂停播放
player.destory() 播放器销毁方法 调用之后播放器容器内dom将被移除
sendChat({text:' '}) 聊天消息发送,text:消息文本,长度限制为140个字符,返回值为已发送消息 组装好的聊天数据
sendQuestion({text:' '}) 提问问题发送,text:问题文本,长度限制为140个字符 组装好的提问数据
vhall_get_live_history_chat_msg() 获取直播聊天历史记录 请求后触发事件vhall_live_history_chat_msg; v2.6.3开始支持Promise返回
vhall_get_live_history_question_msg() 获取直播问答记录 请求后触发事件getQuestionList; v2.6.3开始支持Promise返回
vhall_get_history_question_msg() 获取直播,回放问答记录 (推荐使用,版本2.4.0新增) 请求后触发事件getQuestionList; v2.6.3开始支持Promise返回
vhall_get_record_history_chat_msg(curr_page) 回放拉取历史聊天,curr_page:需拉取数据的页数,每页20条 v2.6.3开始支持Promise返回
vhall_get_history_notice(curr_page) 获取历史直播公告记录,curr_page:需拉取数据的页数,默认值为1,每页20条 v2.6.3开始支持Promise返回
sendSign(签到ID) 发送签到请求,值来自于startSign事件中的msg的消息体sign_id
sendCustomEvent(data) 发送用户自定义广播消息,data类型为object,可自定义,如{type:'xxx_event',data:{id:1,name:'test'}},data大小限制为JSON字符串长度不能大于200
updateUserInfo(username) 根据传入的参数值更新当前用户昵称,参数值长度小于30
sendQuestionPagerAnswer() 发送问卷答案,使用方法见下面 “主要代码实例”, 省市对应编号见下方链接
sendLotteryInfo(param) @param(对象),发送中奖信息 { lottery_id:'抽奖id', name:'中奖人姓名',phone:'手机号', remarks:'备注' }
destroy 单页应用使用,销毁方法,此方法会断开消息通讯(聊天,通知)
docZoomIn() H5文档放大
docZoomOut() H5文档缩小
docZoomReset() H5文档重置大小
docMove() H5文档移动
docNextPage() H5文档下一页 只对文档生效,对白板不生效
docPrevPage() H5文档上一页 只对文档生效,对白板不生效

对应城市编号

API 说明
省级 http://cnstatic01.e.vhall.com/static/js/project/questionnaire/provinces.js
城市 http://cnstatic01.e.vhall.com/static/js/project/questionnaire/citys.js

响应事件API

tips: 蓝色标注为最新版本新增相应消息

API 说明
ready SDK准备就绪后触发事件,全局事件
error SDK调用错误事件消息,全局事件
playerReady 播放器准备就绪后触发事件,全局事件
streamOver 直播活动结束,全局事件
publishStart 活动开始推流,全局事件
canPlayLines 获取视频可播放线路,播放器事件
canPlayDefinitions 获取视频可播放清晰度,播放器事件
userOnline 用户上线事件消息
userOffline 用户下线事件消息
chatMsg 收到直播聊天消息事件(当前用户发送消息不会触发该事件)
disadbleChat 直播禁言消息
permitChat 直播恢复禁言消息
forbidChat 直播全员禁言消息,1为全员禁言,0为恢复全员禁言
kickout 直播踢出消息
kickoutrestore 直播恢复踢出消息
vhall_live_history_chat_msg 拉取直播历史消息后触发事件
vhall_record_history_chat_msg 拉取回放历史消息后触发事件
questionSwitch 问答开关消息
sendQuestion 问答消息发送事件
questionMsg 收到问答消息,只包含用户能接收的问答消息
getQuestionList 拉取直播问答消息后触发事件
sendSign 发送签到请求后触发事件
startSign 接收到签到消息后触发事件
vhall_history_notice 拉取历史直播公告消息后触发事件
announcement 收到公告消息时候触发
sendCustomEvent 发送用户自定义广播消息请求后触发
customEvent 接收到用户自定义广播消息后触发事件
UpdateUser 发送更新用户信息请求后触发事件
questionPagerList 接收问卷消息
live_start H5直播开始事件
live_over H5直播结束事件
lotteryStart 开始抽奖消息v2.6.0开始支持
lotteryResultNotice 抽奖结束消息v2.6.0开始支持
questionarie_submit_success 提交问卷答案成功消息v2.6.0开始支持
questionarie_submit_error 提交问卷答案失败消息v2.6.0开始支持
hostNotice 主持人上下线消息v2.6.4开始支持

注意:chatMsg中收到的消息"type":"image"时表示图片类型,其中image_urls:['url','url']图片链接 ,图片链接前缀为https://cnstatic01.e.vhall.com/upload/ 图片支持动态大小缩放,使用方法参考:https://help.aliyun.com/document_detail/44688.html?spm=a2c4g.11186623.6.1238.3bb0c1f60HfRCX

VHALL_SDK客户端错误代码

错误码 说明
10000 消息体格式不对
10001 消息体为空
10002 当前用户被禁言
10003 聊天输入不能超过140个字符
10004 当前已开启全员禁言
10005 当前活动不是直播状态
10006 当前活动未开启问答
10007 当前用户被踢出
20000 接口请求成功
20005 接口请求失败
50400 用户身份认证错误
50401 用户发送消息频次超过限制
50402 活动xxx发送消息频次超过限制
50403 自定义广播消息内容长度超过限制

VHALL_SDK客户端播放器初始化说明

注意:播放器初始化时会提供一套control控制,pc会提供弹幕输入控制,在使用时如需自定义,请自行用样式覆盖 如:

// 控制弹幕输入隐藏
.vhallPlayer-container .vhallPlayer-barrage-box{
   display: none !important;
}

主要代码示例

所有api及event事件的使用样例 SDK准备就绪后触发事件

     /**
     * [ready sdk准备就绪]
     */
    VHALL_SDK.on('ready', function() {
        VHALL_SDK.getUserinfo();
        /**

         * {
         *     avatar:"//cnstatic01.e.vhall.com/static/images/watch/head50.png" //头像
         *     forbidchat:"" //0:未开启全员禁言,1:已开启全员禁言
         *     is_gag:0 //0:未禁言,1:禁言
         *     is_kickout:0 //0:未踢出,1:踢出
         *     role:"user"//用户角色
         *     userid:"用户参会id"
         *     username:"昵称"
         * }
         */
        VHALL_SDK.getRoominfo();
        /**

         *  {
         *     type: 1 // 1:活动直播中,2:预约中,3:活动结束
         *     openQuestion : 1 //1: 开启,0 || '':关闭
         * }
         */
    });

SDK调用错误事件

    /**

     * [error sdk调用错误事件]
     * @param  {[type]} msg [description]
     */
    VHALL_SDK.on('error', function(msg) {
        console.log(msg);
    });`</code>`

播放器就绪后触发事件

    VHALL_SDK.on("playerReady", function(){
     let speedList = VHALL_SDK.player.getSpeedList()
	 console.log('倍速列表:' + speedList)
	 /**
     * 设置倍速
     */
	 VHALL_SDK.player.playSpeed(1.5)
    /**
     * 可播线路消息
     */
    VHALL_SDK.player.on('canPlayLines', function(msg) {
        var _src = '';
        //  i 的值为之后调用方法VHALL_SDK.player.setPlayerLine的传参
        for (var i in msg) {
            _src += `<li>` + i + `</li>`;
        }
   $("#lines").html(_src).find("li").eq(0).addClass('active');
    });
    /**

     * 可播清晰度消息
     */
    VHALL_SDK.player.on('canPlayDefinitions', function(msg) {
        var _src = '';
         //  i 的值为之后调用方法VHALL_SDK.player.setPlayerDefinition的传参
        for (var i in msg) {
            _src += `<li>` + i + `</li>`;
        }
        $("#definitions").html(_src).find("li").eq(0).addClass('active');
    });
});
// 监听主持人上下线消息
VHALL_SDK.on('hostNotice', function (msg) {
  if (msg.type == 'online') {
    console.log('主持人上线');
  } else {
    console.log('主持人下线');
  }
});
VHALL_SDK.queryRoominfo().then(res => {
	console.log('----实时通过接口获取活动信息----');
 	console.log(res)
})

活动开始推流
  VHALL_SDK.on('publishStart', function(msg) {
            alert('活动开始推流');            
        });`</code>`
直播结束
`<code>`
  VHALL_SDK.on('streamOver', function(msg) {
            alert('活动已结束');            
        });`</code>`

用户上线

    /**

     * [userOnline 用户上线]
     * @param  {[type]} msg [description]
     */
    VHALL_SDK.on('userOnline', function(msg) {
        console.log(msg);
    });`</code>`
    
用户下线

    /**

     * [userOffline 用户下线]
     * @param  {[type]} msg [description]
     */
    VHALL_SDK.on('userOffline', function(msg) {
        console.log(msg);
    });`</code>`

收到直播聊天消息

    /**

     * [chatMsg 直播收到聊天消息]
     * @param  {[type]} msg [object]
     */
    VHALL_SDK.on('chatMsg', function(msg) {
        console.log(msg);
    });`</code>`

直播消息发送后触发事件

     * [sendChat 直播消息发送后事件] (H5活动不会调用回调函数)
     */
    VHALL_SDK.on('sendChat, function(msg) {
        console.log(msg);
    });`</code>`

问答消息发送后触发事件

    /**

     * [sendQuestion 直播问答消息发送事件]
     */
    VHALL_SDK.on('sendQuestion, function(msg) {
        console.log(msg);
    });
    
直播禁言消息

    /**

     * [disadbleChat 直播禁言消息]
     * @param  {[type]} [禁言用户id]
     */
    VHALL_SDK.on('disadbleChat', function(userid) {
        console.log(userid);
    });`</code>`
    
直播恢复禁言消息

    /**

     * [forbidchat 直播全员禁言消息]
     * @param  {[type]} status [1:开启,0:关闭]
     */
    VHALL_SDK.on('forbidChat', function(status) {
        console.log(status);
    });

直播踢出消息

    /**

     * [kickout 直播踢出消息]
     * @param  {[type]} userid [被踢出用户id]
     */
    VHALL_SDK.on('kickout', function(userid) {
        console.log(userid);
    });
        
直播恢复踢出消息

    /**

     * [kickoutRestore 直播恢复踢出消息]
     * @param  {[type]} userid [恢复踢出用户id]
     */
    VHALL_SDK.on('kickoutRestore', function(userid) {
        console.log(userid);
    });
       
获取直播历史消息成功回调

    /**

     * [vhall_live_history_chat_msg 获取直播历史消息成功回调]
     * @param  {[arraylist]} msg [数据数组]
     */
    VHALL_SDK.on('vhall_live_history_chat_msg', function(msg) {
        console.log(msg);
    });
    
获取回放历史消息成功回调

    /**

     * [vhall__record_history_chat_msg 获取回放历史消息成功回调]
     * @param  {[arraylist]} msg [数据数组,回放中有curr_page,total,total_page有数据]
     */
    VHALL_SDK.on('vhall_record_history_chat_msg', function(msg) {
        console.log(msg);
    });
    
问答开关消息

    /**

     * [questionSwitch 直播问答开关消息]
     * @param  {[type]} msg [msg.status 1:开启,0:关闭]
     */
    VHALL_SDK.on('questionSwitch', function(msg) {
        console.log(userid);
    });
    
发送问答消息后触发事件
`<code>`
    /**

     * [sendQuestion 直播问答消息发送事件]
     */
    VHALL_SDK.on('sendQuestion, function(msg) {
        console.log(msg);
    });
    
收到问答消息

    /**

     * [question 直播问答消息]
     * @param  {[type]} msg [消息体]
     */
    VHALL_SDK.on('questionMsg', function(msg) {
        console.log(userid);
    });
    
拉取问答消息后触发事件

    /**

     * [getQuestionList 获取直播问答历史消息]
     * @type {[type]}
     */
    VHALL_SDK.getQuestionList();
	
	/**
    * 监听主讲发送的问卷消息
    * @param  {[type]} msg [问卷消息体]
    */
	VHALL_SDK.on('questionPagerList', function (msg) {
	  console.log('-----------收到主讲发送的问卷消息-----------')
	  console.log(msg)
	});
	
	/**
    * 监听抽奖开始消息
    * @param  {[type]} msg [消息体]
    */
	VHALL_SDK.on('lotteryStart', function (msg) {
	   alert('抽奖开始')
	});
	
	/**
    * 监听抽奖结束消息
    * @param  {[type]} msg [消息体]
    */
	VHALL_SDK.on('lotteryResultNotice', function (msg) {
	   // msg: {winners: [中奖用户列表], lottery_id:'抽奖id', won: true| false}
	   // won 当前用户是否中奖
	   window.lotteryData = msg
       var lotteryTip = msg.won ? '恭喜中奖,请填写中奖信息' : '抽奖结束,很遗憾未中奖'
       alert(lotteryTip)
       if(msg.won){
         $('.lottery-box').css('display','block')
       }
	});
	
	/**
    * 监听提交问卷答案成功消息
    * @param  {[type]} msg [消息体]
    */
	VHALL_SDK.on('questionarie_submit_success', function (msg) {
	   alert('问卷提交成功')
	});
	
	/**
    * 监听提交问卷答案失败消息
    * @param  {[type]} msg [消息体]
    */
	VHALL_SDK.on('questionarie_submit_error', function (msg) {
	   alert('问卷提交失败')
	});
	
	/* 发送问卷答案,报文样例 */
	var questionPager = {
		survey_id: "8102",
		data: {
			text: {
			  "7722": "少时诵诗书所"
			},
			radio: {
				"7720": {
				   "13275": "选项1"
				}
			},
			checkbox: {
				"7721": {
					"13277": "选项1",
					"13278": "选项2",
					"13279": "是是是"
				}
			},
			select: {
				"7723": "19,1188"
			}
		}
	};
	VHALL_SDK.sendQuestionPagerAnswer(questionPager)
	监听H5文档和白板的切换事件
	VHALL_SDK.on('panelchange',function(type){
		if(type=='document'){
			//文档区域已切换为文档类型
		}else{
			//文档区域已切换为白板类型
		}
	})
	监听H5文档观众是否可见事件
     VHALL_SDK.on('docvisibility',function(data){
        if(data.status == 'off'){
          // 文档观众不可见
        }else{
           // 文档观众可见
          }
     })

直播SDK DEMO    

地址

http://cnstatic01.e.vhall.com/jssdk/dist/2.6.9/index.html?app_key=app_key&signedat=signedat&sign=sign&id=roomid&account=account&username=username

*注:需要将获取到的参数以URL传参的方式拼接到URL中即可使用,demo提供了基本的样式,开发者可在demo样式的基础上修改成自定义的样式

点播(Flash)v1.0.0    

点播SDK准备    

依赖库

<script src="http://cnstatic01.e.vhall.com/3rdlibs/jquery/1.11.2/jquery.min.js" type="text/javascript"></script>

引入JS文件

在需要调用SDK的页面插入以下代码以引入JS文件:

<script type="text/javascript" src="http://cnstatic01.e.vhall.com/demand-upload-jssdk/dist/1.0.0/vhallDemandSDK.js"></script>
点播SDK权限验证    

权限验证

请使用以下的方法和参数进行SDK的权限的验证

根据appKey和secretKey生成sign 生成sign的具体规则如下,其生成规则如下:

序号 规则
1 按参数名升序排列
2 然后按参数名1+参数值+参数名2+参数值拼接
3 在首尾各加上secret_key
4 计算md5作为sign

示例:

// 该代码为客户端DEMO代码 仅供参考(生产环境请参考代码下面的服务端代码) 
        function sign(appKey, secretKey) {
            var param = {};
            return {
                doSign :function(){
                    param.auth_type = 2;
                    param.app_key = appKey;
                    param.signed_at = new Date().getTime().toString().substr(0, 10);
                    var paramArray = getArray(param);
                    var signStr = secretKey;
 
                    for(var i =0; i < paramArray.length; i ++) {
                        signStr += paramArray[i];
                    }
 
                    signStr += secretKey;
 
                    return {
                        str : hex_md5(signStr), /* 用MD5加密得到最终sign */
                        time : param.signed_at /* 获取到sign的时间戳 */
                    }
                }
            }

            function getArray(paramObj) {
                var paramArray = [];
                var length = 0;
                for (var i in paramObj) {
                    paramArray[length] = i + paramObj[i];
                    length += 1;
                }
                paramArray.length = length;
                return paramArray.sort();
            }
        }

对上述内容中所提appkey、app_key以及secret_key三个参数的说明:

appkey和app_key均表示添加应用后所得到的AppKey列对应的值

secret_key表示添加应用后所得到的SecretKey(注意与AppSecretKey区分)列对应的值

appKey和secretKey获取方法获取请参见 [[http://e.vhall.com/home/vhallapi/instructions ]]

服务签名端代码请参考 [[http://e.vhall.com/home/vhallapi/instructions]]

点播上传    

初始化dom

/**
     */
    <input type="file" id="upload"/>

点播初始化

/** 
     * 调用 vhallDemandSDK 方法
     */
         vhallDemandSDK('#upload',{
            params: {
                sign:sign,  /**sign**/
                signed_at:time, /**获取sign的时间戳**/
                app_key:appKey
            },
            ready: function() {
                /**
                  * 初始化完成的回调函数
                **/
            },
            beforeUpload:function() {
                /**
                  * 准备中...(文件进行MD5转换过程)
                **/
            },
            progress:function(percent, file){
               /**
                 * 上传中...'
                 * 'percent 上传进度百分比'
                 * 'file 上传文档具体信息
               **/
            },
            uploadSuccess: function(res){
               /**
                 * 上传成功!'
                 * 'res 成功返回的回放ID records_id 和 活动ID webinar_id
               **/
            },
            error: function(msg,file,e){
                /**
                  * 上传出错'
                  * 'msg 错误返回的状态码信息'
                **/
            }
        })

错误状态码对应信息参见消息体

错误码 说明
10000 当前浏览器不支持断点上传
10001 请传入类似于"#id"选择器
10003 当前传入的dom不是input file
10004 不支持该文件格式
10005 上传文件大于10GB
10006 获取上传临时授权失败
10008 没有上传权限
10009 回放标题不能为空
11010 活动标题不能为空
11011 视频路径不能为空
10104 子账号信息不存在
点播SDK DEMO    

地址

http://cnstatic01.e.vhall.com/demand-upload-jssdk/dist/1.0.0/index.html?appKey=appKey&secretKey=secretKey

*注:需要将获取到的 appKey 和 secretKey 以URL传参的方式拼接到URL中即可使用,demo提供了基本的样式,开发者可在demo样式的基础上修改成自定义的样式

点播(H5)v2.0.0    
点播(H5)SDK准备    

依赖库

<script src="http://cnstatic01.e.vhall.com/3rdlibs/jquery/1.11.2/jquery.min.js" type="text/javascript"></script>

注: 1、SDK Demo中引入的依赖库跟此处略有不同,各位开发者可参照自行调整。
微吼提供两个在线CDN版本库,分别为:
http://cnstatic01.e.vhall.com/3rdlibs/jquery/1.11.2/jquery.min.js

http://cnstatic01.e.vhall.com/3rdlibs/jquery/3.2.1/jquery.min.js

2、不同的依赖库,CDN对于页面加载打开的速度有一定的影响,各位开发者注意。

引入JS文件

在需要调用SDK的页面插入以下代码以引入JS文件:

<script type="text/javascript" src="http://cnstatic01.e.vhall.com/demand-upload-jssdk/dist/2.0.0/vhallDemandSDK.js"></script>
点播(H5)SDK权限验证    

权限验证

请使用以下的方法和参数进行SDK的权限的验证

根据appKey和secretKey生成sign 生成sign的具体规则如下,其生成规则如下:

序号 规则
1 按参数名升序排列
2 然后按参数名1+参数值+参数名2+参数值拼接
3 在首尾各加上secretKey
4 计算md5作为sign

示例:

// 该代码为客户端DEMO代码 仅供参考(生产环境请参考代码下面的服务端代码) 
        function sign(app_key, secret_key) {
            var param = {};
            return {
                doSign :function(){
                    param.auth_type = 2;
                    param.app_key = app_key;  /* 入参-此处取自地址栏参数appKey */
                    param.signed_at = new Date().getTime().toString().substr(0, 10);
                    var paramArray = getArray(param);
                    var signStr = secret_key; /* 入参-此处取自地址栏参数secretKey */
 
                    for(var i =0; i < paramArray.length; i ++) {
                        signStr += paramArray[i];
                    }
 
                    signStr += secret_key;
 
                    return {
                        str : hex_md5(signStr), /* 用MD5加密得到最终sign */
                        time : param.signed_at /* 获取到sign的时间戳 */
                    }
                }
            }

            function getArray(paramObj) {
                var paramArray = [];
                var length = 0;
                for (var i in paramObj) {
                    paramArray[length] = i + paramObj[i];
                    length += 1;
                }
                paramArray.length = length;
                return paramArray.sort();
            }
        }

对上述内容中所提appKey、secretKey 二个参数的说明:

appKey表示添加应用后所得到的AppKey列对应的值

secretKey表示添加应用后所得到的SecretKey(注意与AppSecretKey区分)列对应的值

appKey和secretKey获取方法获取请参见 [http://e.vhall.com/home/vhallapi/instructions]

服务签名端代码请参考 [http://e.vhall.com/home/vhallapi/instructions]

点播(H5)上传    

初始化dom

/**
     */
    <input type="file" id="upload"/>

点播初始化

/** 
     * 调用 vhallDemandSDK 方法
     */
         vhallDemandSDK('#upload',{
            params: {
                sign:sign,  /**sign**/
                signed_at:time, /**获取sign的时间戳**/
                app_key:appKey,
				sdkChildID:sdkChildID, /**子账号ID,地址栏可传可不传**/
				webinarName: webinarName, /**点播活动名称,可传可不传**/
            },
            ready: function() {
                /**
                  * 初始化完成的回调函数
                **/
            },
            beforeUpload:function() {
                /**
                  * 准备中...(文件进行MD5转换过程)
                **/
            },
            progress:function(percent, file){
               /**
                 * 上传中...'
                 * 'percent 上传进度百分比'
                 * 'file 上传文档具体信息
               **/
            },
            uploadSuccess: function(res){
               /**
                 * 上传成功!'
                 * 'res 成功返回的回放ID records_id 和 活动ID webinar_id
               **/
            },
            error: function(msg,file,e){
                /**
                  * 上传出错'
                  * 'msg 错误返回的状态码信息'
                **/
            }
        })

错误状态码对应信息参见消息体

错误码 说明
10000 当前浏览器不支持断点上传
10001 请传入类似于"#id"选择器
10003 当前传入的dom不是input file
10004 不支持该文件格式
10005 上传文件大于5GB
10006 获取上传临时授权失败
10008 当前账号无上传权限
15001 获取用户信息失败
15002 获取微吼云信息失败
点播(H5)SDK DEMO    

地址

http://cnstatic01.e.vhall.com/demand-upload-jssdk/dist/2.0.0/index.html?appKey=appKey&secretKey=secretKey

注:需要将获取到的 appKey 和 secretKey 以URL传参的方式拼接到URL中即可使用,demo提供了基本的样式,开发者可在demo样式的基础上修改成自定义的样式。

版本更新记录    

jssdk V2.6.0更新内容

  • 新增问卷提交(成功,失败)通知
  • 新增播发器“跑马灯”支持 -- 需在控制台设置跑马灯信息(jssdk读取控制设置的跑马灯)
  • 新增播发器“水印”支持 -- 需在控制台设置水印信息(jssdk读取控制设置的水印)
  • 新增“抽奖”消息通知 -- 抽奖开始,抽奖结束(是否中奖)及设置发送中奖信息

jssdk V2.6.1更新内容

  • 修复flash回放文档消息时间一样导致的文档不显示问题

jssdk V2.6.2更新内容

  • 修复新老消息异常打印时,大量聊天数据触发console导致的页面卡顿问题

jssdk V2.6.3更新内容

1,以下5个api方法支持Promise返回

  • 获取直播聊天历史记录(vhall_get_live_history_chat_msg())
  • 获取直播问答记录(vhall_get_live_history_question_msg())
  • 获取直播,回放问答记录 (vhall_get_history_question_msg())
  • 回放拉取历史聊天 (vhall_get_record_history_chat_msg(curr_page))
  • 获取历史直播公告记录 (vhall_get_history_notice(curr_page))

2,Flash聊天支持图片消息

图片消息样例:

{
  "to": "",
  "user_role": "host",
  "role_name": "host",
  "user_name": "杨勇",
  "nickname": "杨勇",
  "account_id": "16420818",
  "user_id": "1258770",
  "app": "vhall",
  "avatar": "http://t-alistatic01.e.vhall.com/upload/user/avatar/b6/40/b6407a71146c89a2e335925981cbd5bc.jpg",
  "data": {
     "arrImg": [
"//t-alistatic01.e.vhall.com/upload/webinars/chat/85/77/85771aa405f311ba83b0d4d7e1b4faf0.jpg",
"//t-alistatic01.e.vhall.com/upload/webinars/chat/2e/ee/2eeea45977e8e825da2bbdd5a1d58326.jpg"
     ],
     "text": ""
  },
  "time": "2020-04-02 18:28:50",
  "role": "host",
  "event": "msgImg",
  "room": "691033756",
  "real_room": "691033756",
  "channel": "691033756",
  "content": ""
}

jssdk V2.6.4更新内容如下:

  • 解决活动预约时重复init重复创建占位图问题
  • 新增queryRoominfo方法提供实时查询活动信息(getRoominfo是初始化时信息)
  • 针对直播刚开始视频清晰度列表只有原画进行兼容
  • 增加主持端上下线消息通知(监听hostNotice)
  • 预约时增加消息通知(publishStart开始推流消息),用于解决用户无法知道直播已经开始的问题
  • getRoominfo() 新增活动封面img_url字段,方便用户进行自定义处理
  • H5活动中jssdk观看端控制台查看主持人发送的聊天中,role返回的值是“user”

使用样例:

// 监听主持人上下线消息
VHALL_SDK.on('hostNotice', function (msg) {
    if (msg.type == 'online') {
       console.log('主持人上线');
    } else {
       console.log('主持人下线');
    }
});
// 监听直播开始
VHALL_SDK.on('publishStart', function (msg) {
    console.log('活动开始推流');
});
VHALL_SDK.queryRoominfo().then(res => {
    console.log('----实时通过接口获取活动信息----');
    console.log(res)
})



jssdk V2.6.5更新内容如下:


  • H5解决回放状态时,播放器进度条点击对应时间后有偏差的问题,升级底层播放器到2.1.7
  • H5解决调用VHALL_SDK.destroy()后,控制台发现还在打拉流日志的问题
  • Flash解决调用VHALL_SDK.destroy()后,清除定时器

jssdk V2.6.6更新内容如下:


  • 解决Flash活动wap端获取清晰度消息canPlayDefinitions触发两次问题

jssdk V2.6.7更新内容如下:


  • 预约时通过监听publishStart,开始直播之后重新初始化sdk,预约消息恢复导致不能收到聊天广播
v2.6    

jssdk V2.6及其子版本相关更新说明

jssdk V2.6.9更新内容如下:

  • 解决使用JS SDK观看H5活动,导致控制台并发中1个人变成2个人的问题;

jssdk V2.6.8更新内容如下:

  • H5活动,直播和回放时,支持观众可以对文档自由翻页。当有权限操作文档的人翻页时,该观众的文档回到当前文档位置;
  • 触发resize事件,文档部分新增自动调整文档大小功能

jssdk V2.6.7更新内容如下:

  • 预约时通过监听publishStart,开始直播之后重新初始化sdk,预约消息恢复导致不能收到聊天广播

jssdk V2.6.6更新内容如下:

  • 解决Flash活动wap端获取清晰度消息canPlayDefinitions触发两次问题

jssdk V2.6.5更新内容如下:

  • H5解决回放状态时,播放器进度条点击对应时间后有偏差的问题,升级底层播放器到2.1.7
  • H5解决调用VHALL_SDK.destroy()后,控制台发现还在打拉流日志的问题
  • Flash解决调用VHALL_SDK.destroy()后,清除定时器

jssdk V2.6.4更新内容如下:

  • 解决活动预约时重复init重复创建占位图问题
  • 新增queryRoominfo方法提供实时查询活动信息(getRoominfo是初始化时信息)
  • 针对直播刚开始视频清晰度列表只有原画进行兼容
  • 增加主持端上下线消息通知(监听hostNotice)
  • 预约时增加消息通知(publishStart开始推流消息),用于解决用户无法知道直播已经开始的问题
  • getRoominfo() 新增活动封面img_url字段,方便用户进行自定义处理
  • H5活动中jssdk观看端控制台查看主持人发送的聊天中,role返回的值是“user”

使用样例:

// 监听主持人上下线消息
VHALL_SDK.on('hostNotice', function (msg) {
    if (msg.type == 'online') {
       console.log('主持人上线');
    } else {
       console.log('主持人下线');
    }
});
// 监听直播开始
VHALL_SDK.on('publishStart', function (msg) {
    console.log('活动开始推流');
});
VHALL_SDK.queryRoominfo().then(res => {
    console.log('----实时通过接口获取活动信息----');
    console.log(res)
})



jssdk V2.6.3更新内容

1,以下5个api方法支持Promise返回

  • 获取直播聊天历史记录(vhall_get_live_history_chat_msg())
  • 获取直播问答记录(vhall_get_live_history_question_msg())
  • 获取直播,回放问答记录 (vhall_get_history_question_msg())
  • 回放拉取历史聊天 (vhall_get_record_history_chat_msg(curr_page))
  • 获取历史直播公告记录 (vhall_get_history_notice(curr_page))

2,Flash聊天支持图片消息

图片消息样例:

{
  "to": "",
  "user_role": "host",
  "role_name": "host",
  "user_name": "杨勇",
  "nickname": "杨勇",
  "account_id": "16420818",
  "user_id": "1258770",
  "app": "vhall",
  "avatar": "http://t-alistatic01.e.vhall.com/upload/user/avatar/b6/40/b6407a71146c89a2e335925981cbd5bc.jpg",
  "data": {
     "arrImg": [
"//t-alistatic01.e.vhall.com/upload/webinars/chat/85/77/85771aa405f311ba83b0d4d7e1b4faf0.jpg",
"//t-alistatic01.e.vhall.com/upload/webinars/chat/2e/ee/2eeea45977e8e825da2bbdd5a1d58326.jpg"
     ],
     "text": ""
  },
  "time": "2020-04-02 18:28:50",
  "role": "host",
  "event": "msgImg",
  "room": "691033756",
  "real_room": "691033756",
  "channel": "691033756",
  "content": ""
}

jssdk V2.6.2更新内容

  • 修复新老消息异常打印时,大量聊天数据触发console导致的页面卡顿问题

jssdk V2.6.1更新内容

  • 修复flash回放文档消息时间一样导致的文档不显示问题

jssdk V2.6.0更新内容

  • 新增问卷提交(成功,失败)通知
  • 新增播发器“跑马灯”支持 -- 需在控制台设置跑马灯信息(jssdk读取控制设置的跑马灯)
  • 新增播发器“水印”支持 -- 需在控制台设置水印信息(jssdk读取控制设置的水印)
  • 新增“抽奖”消息通知 -- 抽奖开始,抽奖结束(是否中奖)及设置发送中奖信息

v3.0    

JSSDK v3.0.7 更新记录

【优化】优化日志输出

JSSDK v3.0.6 更新记录

【更新】升级播放器SDK,解决微信中播放器进度条被手机自带进度条劫持,导致显示不正确问题

JSSDK v3.0.5 更新记录

【更新】从3.0.5版本起,获取直播和回放历史聊天信息,统一使用vhall_get_live_history_chat_msg方法,并且此方法仅支持分页传参,查询分页数据。
vhall_get_record_history_chat_msg 方法从3.0.5版本起将不再支持。

JSSDK v3.0.4 更新记录

【更新】 JSSDK完成Flash活动去flash化。即JSSDK观看flash活动不再需要FLASH插件就可播放,并且Flash活动下JSSDK支持对播放器相关操作

【更新】 JSSDK完成对IE10, IE11兼容

【更新】 SDK增加全局destroy方法,同时销毁播放器SDK,聊天SDK。取消播放器SDK单独销毁方法destroy

【修复】 初始化JSSDK填写邮箱后,后台数据未展示邮箱信息

JSSDK v3.0.2 更新记录

【修复】 修复播放器控制按钮状态切换

【修复】 SDK初始化完成事件监听ready

【修复】 SDK播放器初始化完成事件监听playerReady

JSSDK v3.0.1 更新记录

【新增】 兼容SDK3.0版本前SDK使用方式

【新增】 SDK增加错误提示,提高用户体验

【修复】 SDK内根据http泛协议进行自动转换

【修复】 SDK在Edge浏览器中兼容问题

JSSDK v3.0 更新记录

【新增】 全新的 API 使用方法 ( 不兼容2.6.9之前版本 ,2.6.9 兼容API开发中 )

【新增】 完善的功能模块划分API 文档

【新增】 移动端文档演示笔触功能

【新增】 H5类型活动 清晰度切换功能

【修复】 JSSDK用户与APP端用户聊天互通时角色标识的问题

【修复】 文档翻页后使用jssdk进入直播间,文档不显示当前页

【修复】 JSSDK用户在成员列表中显示上麦按钮的BUG

【优化】 JSSDK 报错相关信息

【优化】 剔除SDK 对JQuery 类库的依赖

【优化】 播放器线路切换机制

【优化】 内部架构及性能相关问题

v3.1    

JSSDK v3.1.1 更新记录

【新增】历史聊天消息中增加图片字段,用于图片消息回显

【优化】优化播放封面在个别机型不展示的问题

JSSDK v3.1.0 更新记录

【新增】从3.1版本起支持两种延签方式RSA和MD5

【新增】初始化新增password字段,处理第三方k值或已有用户密码问题

【新增】初始化新增record_id字段,播放指定回放(当前活动如果在直播,此字段传值正确,将默认播放该回放)

【新增】初始化新增sign_type字段,表示验签方式,0:MD5(默认),1:RSA (用户需要在业务中自行处理RSA验签格式等拼接)

【新增】新增文档开关监听DocOpenStatus。 on: 开启, off: 关闭

【新增】新增文档白板切换监听DocAndWhiteStatus。 document : 开启文档, board : 开启白板

【优化】播放器进度条长显,默认4s自动隐藏,滑动触发

【修复】设置回放时间,不能按预期显示问题