敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多。
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20251019.zip,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
♦ 腾讯云官方参考资料:
♦ 产品文档
♦ 服务器端API
♦ 客户端API
♦ 用腾讯平台提供的 SecretKey 在你的服务器端 计算 UserSig 做签名保护
登录、退出、昵称头像、事件监听等全局基础接口
sdkAppId:
userId:
userSig:
jsBridge.txRtc.login({
//必须,数字,腾讯平台上创建的应用ID
sdkAppId: parseInt($("#loginSdkAppId_user1").val()),
//必须,字符串,用户ID
userId : $("#loginUserId_user1").val(),
//必须,字符串,用户安全签名
//如何 计算UserSig
userSig : $("#loginUserSig_user1").val()
}, function(succ, data) {
if (succ) {
alert("登录成功");
} else {
alert("登录失败\n" + JSON.stringify(data));
}
});
sdkAppId:
userId:
userSig:
jsBridge.txRtc.login({
//必须,数字,腾讯平台上创建的应用ID
sdkAppId: parseInt($("#loginSdkAppId_user2").val()),
//必须,字符串,用户ID
userId : $("#loginUserId_user2").val(),
//必须,字符串,用户安全签名
//如何 计算UserSig
userSig : $("#loginUserSig_user2").val()
}, function(succ, data) {
if (succ) {
alert("登录成功");
} else {
alert("登录失败\n" + JSON.stringify(data));
}
});
sdkAppId:
userId:
userSig:
jsBridge.txRtc.login({
//必须,数字,腾讯平台上创建的应用ID
sdkAppId: parseInt($("#loginSdkAppId_user3").val()),
//必须,字符串,用户ID
userId : $("#loginUserId_user3").val(),
//必须,字符串,用户安全签名
//如何 计算UserSig
userSig : $("#loginUserSig_user3").val()
}, function(succ, data) {
if (succ) {
alert("登录成功");
} else {
alert("登录失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.logout(function(succ, data) {
if (succ) {
alert("退出成功");
} else {
alert("退出失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.getLoginStatus(function(succ, data) {
//data.status 字符串类型
//logined 已登录
//logining 正在登录
//logout 已退出
alert(JSON.stringify(data));
});
nickname:
avatar:
jsBridge.txRtc.setUserInfo({
//字符串,昵称
nickname: $("#nickname").val(),
//头像,图片链接
avatar : $("#avatar").val()
}, function(succ, data) {
if (succ) {
alert("设置成功");
} else {
alert("设置失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.requestPermission(function(succ, data) {
//data.allowAll 是否允许了全部权限
//data.neverAsk 是否勾选了“不在询问”,此时可调用 jsBridge.appSettings() 跳转到系统设置,让用户手动开启权限
alert(JSON.stringify(data));
});
//这是 TRTC 最底层的事件监听器,其他的诸如音视频通话、直播等监听器都是基于此的二次封装 //此方法可以监听到 所有事件 状态 jsBridge.txRtc.setListener(function(succ, e) { switch (e.on) { case "onError": //出错 break; case "onEnterRoom": //自己进入房间 break; case "onExitRoom": //自己退出房间 break; case "onRemoteUserEnterRoom": //其他人进入房间 break; case "onRemoteUserLeaveRoom": //其他人退出房间 break; case "onMicDidReady": //已开启麦克风 break; //... //所有事件及其含义 请参考这里 } showResult({ which: "setListener", e : e }); }); /** 回调参数 e 为 json 类型 { on : 事件名称,字符串类型 data: 事件参数,json 类型,具体含义请参考腾讯官方文档 } **/
jsBridge.txRtc.removeListener(function(succ, data) {
if (succ) {
alert("移除成功");
} else {
alert("移除失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.getSDKVersion(function(succ, data) {
alert(data.version);
});
enable:
jsBridge.txRtc.enableFloatWindow({
//布尔
enable: JSON.parse($("#enableFloat").val())
}, function(succ, data) {
if (succ) {
alert("设置成功");
} else {
alert("设置失败\n" + JSON.stringify(data));
}
});
enable:
jsBridge.txRtc.enableMuteMode({
//布尔
enable: JSON.parse($("#enableMute").val())
}, function(succ, data) {
if (succ) {
alert("设置成功");
} else {
alert("设置失败\n" + JSON.stringify(data));
}
});
bellUrl:
jsBridge.txRtc.setCallingBell({
//铃音链接
bellUrl: $("#bellUrl").val()
}, function(succ, data) {
if (succ) {
alert("设置成功");
} else {
alert("设置失败\n" + JSON.stringify(data));
}
});
userId:
mediaType:
jsBridge.txRtc.call({
//字符串,目标用户的 userId
userId : $("#callUserId").val(),
//字符串,通话媒体类型
//video 视频通话
//audio 音频通话
mediaType: $("#callMediaType").val()
}, function(succ, data) {
if (!succ) {
alert("拨打失败\n" + JSON.stringify(data));
}
});
groupId:
mediaType:
jsBridge.txRtc.groupCall({
//字符串,此次通话的群ID
//需配合腾讯 IM群组管理 使用
groupId : $("#groupCallGroupId").val(),
//字符串数组,目标用户的 userId 列表
userIds : [ "user2", "user3", "user4" ],
//字符串,通话媒体类型
//video 视频通话
//audio 音频通话
mediaType: $("#groupCallMediaType").val()
}, function(succ, data) {
if (!succ) {
alert("群组通话失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.setCallListener(function(succ, e) {
switch (e.on) {
case "onError":
break;
case "onCallReceived":
break;
//...
//所有事件及其含义 请参考这里
}
showResult({
which: "setCallListener",
e : e
});
});
/**
回调参数 e 为 json 类型
{
on : 事件名称,字符串类型
data: 事件参数,json 类型,具体含义请参考腾讯官方文档
}
**/
jsBridge.txRtc.removeCallListener(function(succ, data) {
if (succ) {
alert("移除成功");
} else {
alert("移除失败\n" + JSON.stringify(data));
}
});
roomId:
speechMode:
openCamera:
openMicrophone:
jsBridge.txRtc.createChatRoom({
//数字,此次通话的房间号
roomId : parseInt($("#createChatRoomRoomId").val()),
//字符串,发言模式
//free 自由发言
//apply 申请获得主持人同意后才能发言
speechMode: $("#createChatRoomSpeechMode").val(),
//布尔,是否开启摄像头
openCamera: JSON.parse($("#createChatRoomOpenCamera").val()),
//布尔,是否开启麦克风
openMicrophone: JSON.parse($("#createChatRoomOpenMicrophone").val())
}, function(succ, data) {
if (!succ) {
alert("创建失败\n" + JSON.stringify(data));
}
});
roomId:
openCamera:
openMicrophone:
jsBridge.txRtc.enterChatRoom({
//数字,此次通话的房间号
roomId : parseInt($("#enterChatRoomRoomId").val()),
//布尔,是否开启摄像头
openCamera: JSON.parse($("#enterChatRoomOpenCamera").val()),
//布尔,是否开启麦克风
openMicrophone: JSON.parse($("#enterChatRoomOpenMicrophone").val())
}, function(succ, data) {
if (!succ) {
alert("进入失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.destroyChatRoom(function(succ, data) {
if (succ) {
alert("解散成功");
} else {
alert("解散失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.setChatRoomListener(function(succ, e) {
switch (e.on) {
case "onError":
break;
case "onDestroyRoom":
break;
//...
//所有事件及其含义 请参考这里
}
showResult({
which: "setChatRoomListener",
e : e
});
});
/**
回调参数 e 为 json 类型
{
on : 事件名称,字符串类型
data: 事件参数,json 类型,具体含义请参考腾讯官方文档
}
**/
jsBridge.txRtc.removeChatRoomListener(function(succ, data) {
if (succ) {
alert("移除成功");
} else {
alert("移除失败\n" + JSON.stringify(data));
}
});
roomId:
roomName:
coverUrl:
jsBridge.txRtc.createVideoLiveRoom({
//必须,数字,房间ID
roomId : parseInt($("#createVideoLiveRoomRoomId").val()),
//字符串,房间名称
roomName: $("#createVideoLiveRoomRoomName").val(),
//房间封面图
coverUrl: $("#createVideoLiveRoomCoverUrl").val()
}, function(succ, data) {
if (!succ) {
alert("创建失败\n" + JSON.stringify(data));
}
});
roomId:
jsBridge.txRtc.enterVideoLiveRoom({
//必须,数字,房间ID
roomId: parseInt($("#enterVideoLiveRoomRoomId").val())
}, function(succ, data) {
if (!succ) {
alert("进入失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.setVideoLiveRoomListener(function(succ, e) {
switch (e.on) {
case "onError":
break;
case "onRoomDestroy":
break;
//...
//所有事件及其含义 请参考这里
}
showResult({
which: "setVideoLiveRoomListener",
e : e
});
});
/**
回调参数 e 为 json 类型
{
on : 事件名称,字符串类型
data: 事件参数,json 类型,具体含义请参考腾讯官方文档
}
**/
jsBridge.txRtc.removeVideoLiveRoomListener(function(succ, data) {
if (succ) {
alert("移除成功");
} else {
alert("移除失败\n" + JSON.stringify(data));
}
});
sdkAppId:
userId:
userSig:
roomId:
role:
jsBridge.txRtc.enterRoom({
//数字,腾讯平台上创建的应用ID
sdkAppId: parseInt($("#enterRoomSdkAppId_user1").val()),
//字符串,用户ID
userId : $("#enterRoomUserId_user1").val(),
//字符串,用户安全签名
//如何 计算UserSig
userSig : $("#enterRoomUserSig_user1").val(),
//数字,房间ID,进入同一个房间的用户可以相互交流
roomId : parseInt($("#enterRoomRoomId_user1").val()),
//字符串,以什么 角色 进入房间
//anchor 主播
//audience 观众(听众)
role : $("#enterRoomRole_user1").val(),
//字符串,场景类型,暂时只支持 audioCall 音频通话
scene : "audioCall"
}, function(succ, data) {
if (succ) {
alert("进入成功");
} else {
alert("进入失败\n" + JSON.stringify(data));
}
});
sdkAppId:
userId:
userSig:
roomId:
role:
jsBridge.txRtc.enterRoom({
//数字,腾讯平台上创建的应用ID
sdkAppId: parseInt($("#enterRoomSdkAppId_user2").val()),
//字符串,用户ID
userId : $("#enterRoomUserId_user2").val(),
//字符串,用户安全签名
//如何 计算UserSig
userSig : $("#enterRoomUserSig_user2").val(),
//数字,房间ID,进入同一个房间的用户可以相互交流
roomId : parseInt($("#enterRoomRoomId_user2").val()),
//字符串,以什么 角色 进入房间
//anchor 主播
//audience 观众(听众)
role : $("#enterRoomRole_user2").val(),
//字符串,场景类型,暂时只支持 audioCall 音频通话
scene : "audioCall"
}, function(succ, data) {
if (succ) {
alert("进入成功");
} else {
alert("进入失败\n" + JSON.stringify(data));
}
});
sdkAppId:
userId:
userSig:
roomId:
role:
jsBridge.txRtc.enterRoom({
//数字,腾讯平台上创建的应用ID
sdkAppId: parseInt($("#enterRoomSdkAppId_user3").val()),
//字符串,用户ID
userId : $("#enterRoomUserId_user3").val(),
//字符串,用户安全签名
//如何 计算UserSig
userSig : $("#enterRoomUserSig_user3").val(),
//数字,房间ID,进入同一个房间的用户可以相互交流
roomId : parseInt($("#enterRoomRoomId_user3").val()),
//字符串,以什么 角色 进入房间
//anchor 主播
//audience 观众(听众)
role : $("#enterRoomRole_user3").val(),
//字符串,场景类型,暂时只支持 audioCall 音频通话
scene : "audioCall"
}, function(succ, data) {
if (succ) {
alert("进入成功");
} else {
alert("进入失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.setListener(function(succ, e) {
switch (e.on) {
case "onMicDidReady": {
jsBridge.txRtc.removeListener();
alert("已打开麦克风");
break;
}
}
});
//在 setListener 的 e.on == "onMicDidReady" 时表示成功打开麦克风 查看说明
jsBridge.txRtc.startLocalAudio({
//字符串,音频质量
//default 默认
//speech 语音
//music 音乐
quality: "default"
}, function(succ, data) {
if (!succ) {
alert("打开失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.stopLocalAudio(function(succ, data) {
if (succ) {
alert("关闭成功");
} else {
alert("关闭失败\n" + JSON.stringify(data));
}
});
jsBridge.txRtc.exitRoom(function(succ, data) {
if (succ) {
alert("退出成功");
} else {
alert("退出失败\n" + JSON.stringify(data));
}
});
//这是 TRTC 最底层的事件监听器,其他的诸如音视频通话、直播等监听器都是基于此的二次封装 //此方法可以监听到 所有事件 状态 jsBridge.txRtc.setListener(function(succ, e) { switch (e.on) { case "onError": //出错 break; case "onEnterRoom": //自己进入房间 break; case "onExitRoom": //自己退出房间 break; case "onRemoteUserEnterRoom": //其他人进入房间 break; case "onRemoteUserLeaveRoom": //其他人退出房间 break; case "onMicDidReady": //已开启麦克风 break; //... //所有事件及其含义 请参考这里 } showResult({ which: "setListener", e : e }); }); /** 回调参数 e 为 json 类型 { on : 事件名称,字符串类型 data: 事件参数,json 类型,具体含义请参考腾讯官方文档 } **/
jsBridge.txRtc.removeListener(function(succ, data) {
if (succ) {
alert("移除成功");
} else {
alert("移除失败\n" + JSON.stringify(data));
}
});
监听回调数据: