chore(chat): exclude chat grants from adding numbers to viewer count

This commit is contained in:
2026-03-06 23:42:20 +01:00
parent fbfbe3ff6f
commit c7cedbbfe0
2 changed files with 15 additions and 6 deletions

View File

@@ -473,6 +473,7 @@ app.get(
socket.personalChannel = personalChannel;
socket.viewerId = randomString(10);
socket.isModerator = isModerator;
socket.excludeFromViewerCount = Boolean(dbGrant);
socketState.targetUsername = username;
socketState.channelId = channel.id;
@@ -493,6 +494,8 @@ app.get(
rateLimitWindowSeconds: moderationSettings.rateLimitWindowSeconds,
slowModeSeconds: moderationSettings.slowModeSeconds,
});
socketState.excludeFromViewerCount = Boolean(dbGrant);
socket.send(
JSON.stringify({
@@ -557,7 +560,9 @@ app.get(
if (!streamInfo) return;
await redis.del(`viewer:${socketState.targetUsername}:${socketState.viewerId}`);
if (!socketState.excludeFromViewerCount) {
await redis.del(`viewer:${socketState.targetUsername}:${socketState.viewerId}`);
}
},
async onMessage(evt, ws) {
let outcome = 'ignored';
@@ -574,11 +579,13 @@ app.get(
stopTimer = startChatMessageTimer(messageType);
if (msg.type === 'ping') {
await redis.setex(
`viewer:${socketState.targetUsername}:${socketState.viewerId}`,
30,
'1'
);
if (!socketState.excludeFromViewerCount) {
await redis.setex(
`viewer:${socketState.targetUsername}:${socketState.viewerId}`,
30,
'1'
);
}
socket.send(JSON.stringify({ type: 'pong' }));
outcome = 'pong';
return;

View File

@@ -41,6 +41,7 @@ export interface ChatSocket {
isModerator?: boolean;
metricsTracked?: boolean;
metricsAuthMethod?: string;
excludeFromViewerCount?: boolean;
raw?:
| (ModifiedWebSocket & {
targetUsername?: string;
@@ -50,6 +51,7 @@ export interface ChatSocket {
isModerator?: boolean;
metricsTracked?: boolean;
metricsAuthMethod?: string;
excludeFromViewerCount?: boolean;
})
| null;
}