2,169 changes: 35 additions & 2,134 deletions package-lock.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"dotenv": "^10.0.0",
"express": "^4.17.1",
"nodemon": "^2.0.15",
"redis": "^3.1.2",
"twilio": "^3.71.1"
}
}
12 changes: 11 additions & 1 deletion server.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import dotenv from 'dotenv';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
import { promisify } from 'util';
import express from 'express';
import crypto from 'crypto';
import twilio from 'twilio';
import redis from 'redis';

dotenv.config();

Expand All @@ -21,6 +23,11 @@ const apiKey = process.env.TWILIO_API_KEY_SID;
const apiKeySecret = process.env.TWILIO_API_KEY_SECRET;

const twilioClient = twilio(apiKey, apiKeySecret, { accountSid: accountSid });
const redisClient = redis.createClient();
const redisGet = promisify(redisClient.get).bind(redisClient);
const redisSet = promisify(redisClient.set).bind(redisClient);
const redisIncr = promisify(redisClient.incr).bind(redisClient);
const redisDecr = promisify(redisClient.decr).bind(redisClient);

app.use(express.json());

Expand Down Expand Up @@ -67,6 +74,9 @@ app.post('/start', async (req, res) => {
})
})

// initialize viewer count
await redisSet('live_viewer_count', 0);

return res.status(200).send({
roomId: room.sid,
streamName: streamName,
Expand Down Expand Up @@ -196,7 +206,7 @@ app.post('/audienceToken', async (req, res) => {
*/
app.get('/audienceCount', async (req, res) => {
return res.send({
count: 123,
count: await redisGet('live_viewer_count'),
});
});

Expand Down