UNPKG

zby-live-sdk

Version:

This is a live SDK for weclassroom.

96 lines (85 loc) 3.3 kB
/* * @Author: your name * @Date: 2020-08-28 17:06:45 * @LastEditTime: 2020-12-15 13:18:45 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \1705\zby_live_sdk\src\network\api.js */ import commonFetch from './commonFetch.js'; import {getReportBaseUrl, getApiCloudBaseUrl, getCloudApiDomain, getApiChangeSdkUrl, timestampUrl, getRTCTokenUrl} from '../config/config.js'; import util from '../util/util'; import md5 from 'md5'; import defaultApi from '../default'; //获取信道服务器地址 export function getImServerAddress(param){ return commonFetch(`${getCloudApiDomain()}/service/chat`, param, 'GET'); } /** * @function 从三方服务器获取时间戳 */ export function getNetworkTimestampApi(name = 'taobao'){ return commonFetch(timestampUrl[name], 'GET'); } // 获取云控参数 export function getCloudData(param){ return commonFetch(`${getApiCloudBaseUrl()}/rtccloud/class/init`, param, 'GET', null, util.getVerifySign1()); } //获取初始化参数 export function getInitParams(param) { const types = { student: '/v1/play/init', teacher: '/v1/push/init', assistant: '/v1/push/init' }; const { institutionId, userId, liveId, role} = param; return commonFetch(`${getApiCloudBaseUrl()}${types[role]}`, {institutionId, userId, liveId}, 'GET'); } //获取新旧信道开关和地址 export function getSwitchDomain(param){ return commonFetch(`${getApiCloudBaseUrl()}/v1/switch/domain`, param, 'GET'); } export function dabanDataReport(param){ return commonFetch(getReportBaseUrl(), param, 'POST'); } //sdk切换(客户端直接调用) 根据上课情况手动操作,对单个组ID进行SDK切换 // export function changeSdkInRoom(param){ // return commonFetch(`${getApiChangeSdkUrl()}/rtccloud/sdk/set/room/client`, param, 'FROMDATA'); // } export function changeSdkInRoom(param){ return commonFetch(`${getApiChangeSdkUrl()}/rtccloud/sdk/set/lecture/client`, param, 'FROMDATA'); } export const getAndSetInitParams = async (args) => { const res = await getInitParams(args); if (res && res.sdkInfo) { console.log(`云控请求返回参数正常 ${JSON.stringify(res)}, ${JSON.stringify(res.sdkInfo)}`); return res.sdkInfo[0].sdkName; } else { console.log(`云控请求返回参数错误 ${JSON.stringify(res)}`); } }; export const getRTCToken = async (args, retries = 0) => { const ts = Date.now(); const headers = { 'X-Auth-Sign': md5(`py_client&${ts}60439d96cfbecc2de2872641aea204f2`), 'traceid': util.uuid(), 'X-Auth-Appid': 'py_client', 'X-Auth-TimeStamp': '' + ts, 'Content-Type': 'application/json', }; return commonFetch(getRTCTokenUrl(), args, 'POST', 5000, headers).then((res) => { if (res.s === 10000) { return res.d.token; } else { defaultApi.writeLog(`get token failed: ${JSON.stringify(res)}`, undefined, 'error'); throw new Error('get token failed'); } }).catch((err) => { defaultApi.writeLog(`get token failed: ${JSON.stringify(err)}, retry times: ${retries}`, undefined, 'error'); if (retries < 3) { return getRTCToken(args, retries + 1); } else { return ''; } }); };