еще не понятно, как это будет работать и не будет ли дубляжа.
данные же приходят на все открытые вкладки и уже клиенский js выполняет действия, если допустим все вкладки отправят уведомление на одну и туже вкладку и в итоге куча уведомлений одинаковых.
от сервера уведомления придут на все вкладки, ибо ты websocket-соединение устанавливаешь с каждой открытой вкладки.
А дальше уже на клиенте, вычисляя открытую вкладку, ты либо тупо добавляешь сообщение в чат, либо добавляешь сообщение и еще и уведомление шлешь
Ну то есть на каждой вкладки ты сделаешь проверку что-то типо
if (активнаяВкладка) {
добавитьСообщениеВЧат()
показатьУведомление()
} else {
добавитьСообщениеВЧат()
}