Add randomized client identifier to reduce chance of grabbing the incorrect subscription ID

This commit is contained in:
G.Ambatte
2026-10-11 12:46:30 +13:00
parent 05a7750bd0
commit d7f579b308
3 changed files with 12 additions and 5 deletions
+3 -2
View File
@@ -20,7 +20,7 @@ const Stream = new EventEmitter;
let subscribers = [];
// Listener functions
const subscribe = function(shareId, res){
const subscribe = function(shareId, res, clientFingerprint){
const id = nanoid(24); // NanoID is assumed globally unique;
const subscriber = {
id,
@@ -32,7 +32,7 @@ const subscribe = function(shareId, res){
subscribers.push(subscriber);
Stream.emit('sendUpdate', 'subscribe', { id: subscriber.id, shareId: subscriber.shareId, time: subscriber.time });
Stream.emit('sendUpdate', 'subscribe', { id: subscriber.id, shareId: subscriber.shareId, client: clientFingerprint, time: subscriber.time });
return subscriber.id;
};
@@ -41,6 +41,7 @@ const unsubscribe = function(id){
subscribers
.filter((sub)=>{return sub.id == id;})
.forEach((sub)=>{
clearTimeout(sub.unsubTimer);
Stream.emit('sendUpdate', 'unsubscribe', { id: sub.id, shareId: sub.shareId, time: new Date });
});