From: Chocobozzz Date: Thu, 22 Aug 2019 08:33:22 +0000 (+0200) Subject: Fix socket notification with multiple user tabs X-Git-Tag: v2.0.0-rc.1~119 X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=1b42d73f44811eec1b7ddd72dd0d640a57c3376c;p=github%2FChocobozzz%2FPeerTube.git Fix socket notification with multiple user tabs --- diff --git a/server/lib/peertube-socket.ts b/server/lib/peertube-socket.ts index eb84ecd4b..17748fd18 100644 --- a/server/lib/peertube-socket.ts +++ b/server/lib/peertube-socket.ts @@ -8,7 +8,7 @@ class PeerTubeSocket { private static instance: PeerTubeSocket - private userNotificationSockets: { [ userId: number ]: SocketIO.Socket } = {} + private userNotificationSockets: { [ userId: number ]: SocketIO.Socket[] } = {} private constructor () {} @@ -22,22 +22,26 @@ class PeerTubeSocket { logger.debug('User %d connected on the notification system.', userId) - this.userNotificationSockets[userId] = socket + if (!this.userNotificationSockets[userId]) this.userNotificationSockets[userId] = [] + + this.userNotificationSockets[userId].push(socket) socket.on('disconnect', () => { logger.debug('User %d disconnected from SocketIO notifications.', userId) - delete this.userNotificationSockets[userId] + this.userNotificationSockets[userId] = this.userNotificationSockets[userId].filter(s => s !== socket) }) }) } sendNotification (userId: number, notification: UserNotificationModel) { - const socket = this.userNotificationSockets[userId] + const sockets = this.userNotificationSockets[userId] - if (!socket) return + if (!sockets) return - socket.emit('new-notification', notification.toFormattedJSON()) + for (const socket of sockets) { + socket.emit('new-notification', notification.toFormattedJSON()) + } } static get Instance () {