console
let config = {
APPID: 1739272706,
server: ['wss://webliveroom-test.zego.im/ws', 'wss://webliveroom-test-bak.zego.im/ws'],
user: {
userID: 'jsrun-userid-' + new Date().getTime(),
userName: 'jsrun-userName',
},
pubishStreamID: 'jsrun-pushID' + new Date().getTime(),
tokenServer: 'https://wsliveroom-alpha.zego.im:8282/token',
localVideo: document.querySelector('#localVideo')
};
const zg = new ZegoExpressEngine(config.APPID, config.server);
function eventListen() {
zg.on('roomStateUpdate', (roomID, state, errorCode, extendedData) => {
console.log('roomStateUpdate change to: ', state)
if (state == 'DISCONNECTED') {
}
if (state == 'CONNECTING') {
}
if (state == 'CONNECTED') {
}
});
zg.on('publisherStateUpdate', result => {
console.log('publisherStateUpdate', result.streamID, result.state)
})
zg.on('publishQualityUpdate', (streamID, stats) => {
console.log('publishQualityUpdate', streamID, stats)
})
}
async function getToken(tokenServer, appID, userID) {
return new Promise((res, rej) => {
$.get(tokenServer, { 'app_id': appID, 'id_name': userID }, token => {
res(token);
});
}
)
}
async function login(roomID) {
const token = await getToken(config.tokenServer, config.APPID, config.user.userID);
eventListen();
const result = await zg.loginRoom(roomID, token, config.user);
return result
}
async function publishStream() {
let localStream, result;
try {
localStream = await zg.createStream();
localVideo.srcObject = localStream;
result = await zg.startPublishingStream(config.pubishStreamID, localStream);
return result;
} catch (err) {
console.error('createStream faild,reason:', err);
}
}
async function run() {
let roomID = document.querySelector('#roomID').value;
let loginSuc = await login(roomID);
let publishSuc = await publishStream();
}
<div>
roomID:<input id="roomID"/> <button onclick="run()">输入房间ID推流</button>
</div>
<div>
<video id="localVideo" muted autoplay></video>
</div>
#localVideo {
width: 640px;
height: 480px;
background: black;
}