What I want to do
I want manually add users to the channel from the backend(node js) using agora SDK.
Error
I am getting ReferenceError: window is not defined while implementing Agora-Rtc-SDK in Node js
I tried agora-rtc-SDK-ng and agora-rtc-sdk both libraries but I am getting the same error.
Here is What I did
First I generate token using agora-access-token then after using that token I join the particular channel
Code
const cors = require('cors');
const dotenv = require('dotenv');
const AgoraRTC = require('agora-rtc-sdk-ng')
const {RtcTokenBuilder, RtcRole } = require('agora-access-token');
dotenv.config();
const app = express();
const PORT = process.env.PORT || 8080;
const APP_ID = process.env.APP_ID;
const APP_CERTIFICATE = process.env.APP_CERTIFICATE;
const generateRTCToken = (req, resp) => {
const channelName = req.params.channel;
let uid = req.params.uid;
// get role
let role;
if (req.params.role === 'publisher') {
role = RtcRole.PUBLISHER;
} else if (req.params.role === 'audience') {
role = RtcRole.SUBSCRIBER
} else {
return resp.status(500).json({ 'error': 'role is incorrect' });
}
// get the expire time
let expireTime = req.query.expiry;
if (!expireTime || expireTime === '') {
expireTime = 3600;
} else {
expireTime = parseInt(expireTime, 10);
}
// calculate privilege expire time
const currentTime = Math.floor(Date.now() / 1000);
const privilegeExpireTime = currentTime + expireTime;
// build the token
let token;
if (req.params.tokentype === 'userAccount') {
token = RtcTokenBuilder.buildTokenWithAccount(APP_ID, APP_CERTIFICATE, channelName, uid, role, privilegeExpireTime);
} else if (req.params.tokentype === 'uid') {
token = RtcTokenBuilder.buildTokenWithUid(APP_ID, APP_CERTIFICATE, channelName, uid, role, privilegeExpireTime);
} else {
return resp.status(500).json({ 'error': 'token type is invalid' });
}
// return the token
return token;
}
const addUserToChannle = async () => {
const client = AgoraRTC.createClient({
codec: "vp8",
mode: "rtc",
});
let token = await generateRTCToken()
client.join(APP_ID, req.params.channel, token);
}
app.get('/rtc/:channel/:role/:tokentype/:uid', nocache , addUserToChannle);
app.listen(PORT, () => {
console.log(`Listening on port: ${PORT}`);
});
[1]: https://prnt.sc/52Dp_D9-gwEu