Size: a a a

Node.js — русскоговорящее сообщество

2020 January 17

И

Илья | 😶 in Node.js — русскоговорящее сообщество
Sergey 🛸
Это почему?
а, забей
перечитал что он написал в задаче
источник

F=

FAST =) in Node.js — русскоговорящее сообщество
Sergey 🛸
Делай на последней активной вкладке
Как бы ты сделал определение текущей вкладки, последней активной и куда бы записывал ?
источник

u

undefined in Node.js — русскоговорящее сообщество
1. Отслеживаем активную вкладку.
У window есть onfocus и onblur. При потере фокуса где-то в глобальной переменной ставишь IS_WINDOW_ACTIVE = false, при фокусе true

И уже при приходе обновления от сервера тебе остается проверить IS_WINDOW_ACTIVE и на его основе что-то сделать
источник

F=

FAST =) in Node.js — русскоговорящее сообщество
undefined
1. Отслеживаем активную вкладку.
У window есть onfocus и onblur. При потере фокуса где-то в глобальной переменной ставишь IS_WINDOW_ACTIVE = false, при фокусе true

И уже при приходе обновления от сервера тебе остается проверить IS_WINDOW_ACTIVE и на его основе что-то сделать
если все вкладки не активны, как тогда сделать уведомление ?
источник

u

undefined in Node.js — русскоговорящее сообщество
А какое должно быть поведение в этом случае?
источник

F=

FAST =) in Node.js — русскоговорящее сообщество
undefined
А какое должно быть поведение в этом случае?
если открыта но не активна вкладка с диалогом для которого пришло уведомление, то просто звук, если не открыта вкладка с диалогом и вообще все вкладки не активны, то уведомление должно быть на любой вкладке и звук.
источник

u

undefined in Node.js — русскоговорящее сообщество
FAST =)
если открыта но не активна вкладка с диалогом для которого пришло уведомление, то просто звук, если не открыта вкладка с диалогом и вообще все вкладки не активны, то уведомление должно быть на любой вкладке и звук.
на любой, это то есть на всех? Или на какой-то одной?
источник

F=

FAST =) in Node.js — русскоговорящее сообщество
undefined
на любой, это то есть на всех? Или на какой-то одной?
на какой-то одной
источник

u

undefined in Node.js — русскоговорящее сообщество
А как она должна выбраться среди других?
источник

F=

FAST =) in Node.js — русскоговорящее сообщество
undefined
А как она должна выбраться среди других?
рандомно, да как угодно)
главное что на одной, или на последней открытой.
но последнюю трудно определить в том случае, если я допустим закрою последнюю вкладку находясь при этом на другой вкладке.
источник

u

undefined in Node.js — русскоговорящее сообщество
Расшарить информацию между вкладками тебе поможет localStorage.
Событие onstorage вызывается, когда на любой из вкладок в рамках одного и того же сайта значение localStorage было изменено
источник

u

undefined in Node.js — русскоговорящее сообщество
Далее, чтобы определить, какая страница была последней, то можешь при открытии новой вкладки или изменении фокуса добавлять в localStorage в массив вкладки по порядку, присваивая самим вкладкам какие-то локальные id.
источник

u

undefined in Node.js — русскоговорящее сообщество
Ну и потом останется достать последний id и проверить, а открыта ли вообще такая вкладка. Если ее нет, то удалить и перейти к следующему номеру
источник

F=

FAST =) in Node.js — русскоговорящее сообщество
undefined
Ну и потом останется достать последний id и проверить, а открыта ли вообще такая вкладка. Если ее нет, то удалить и перейти к следующему номеру
Ок, спс!!! Буду пробовать.
источник

F=

FAST =) in Node.js — русскоговорящее сообщество
еще не понятно, как это будет работать и не будет ли дубляжа.
данные же приходят на все открытые вкладки и уже клиенский js выполняет действия, если допустим все вкладки отправят уведомление на  одну и туже вкладку и в итоге куча уведомлений одинаковых.
источник

u

undefined in Node.js — русскоговорящее сообщество
FAST =)
еще не понятно, как это будет работать и не будет ли дубляжа.
данные же приходят на все открытые вкладки и уже клиенский js выполняет действия, если допустим все вкладки отправят уведомление на  одну и туже вкладку и в итоге куча уведомлений одинаковых.
от сервера уведомления придут на все вкладки, ибо ты websocket-соединение устанавливаешь с каждой открытой вкладки.
А дальше уже на клиенте, вычисляя открытую вкладку, ты либо тупо добавляешь сообщение в чат, либо добавляешь сообщение и еще и уведомление шлешь

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

F=

FAST =) in Node.js — русскоговорящее сообщество
undefined
от сервера уведомления придут на все вкладки, ибо ты websocket-соединение устанавливаешь с каждой открытой вкладки.
А дальше уже на клиенте, вычисляя открытую вкладку, ты либо тупо добавляешь сообщение в чат, либо добавляешь сообщение и еще и уведомление шлешь

Ну то есть на каждой вкладки ты сделаешь проверку что-то типо
if (активнаяВкладка) {
   добавитьСообщениеВЧат()
   показатьУведомление()
} else {
   добавитьСообщениеВЧат()
}
если не одна вкладка не является активной что в таком случае ?
ты смотришь какая была последняя так ?
источник

u

undefined in Node.js — русскоговорящее сообщество
Да, ищешь последнюю, копаюсь в localStorage
источник

F=

FAST =) in Node.js — русскоговорящее сообщество
undefined
Да, ищешь последнюю, копаюсь в localStorage
дальше понимаешь какая была последняя и сравниваешь с текущей ?
источник

u

undefined in Node.js — русскоговорящее сообщество
Ага
источник