sbis3-node-ws
Version:
Модуль позволяет использовать ядро интерфейсного фреймворка sbis3-ws(`core.js`) и модуль работы с данными (`Source.js`) в приложении на nodejs.
34 lines (24 loc) • 2.75 kB
Markdown
В IE8 нет нормальных storage events.
? Попробуем положить в основу locable storage: http://balpha.de/2012/03/javascript-concurrency-and-locking-the-html5-localstorage/
Обмен фреймами
Мастер кладет фрейм в localStorage. И сразу же его удаляет.
Мы получим два storage event - одно на запись, второе на удаление. Каждая вкладка, получив первый эвент
считает свой новый фрейм.
Что делать, если storage event сломан?
В IE8 мы не получим ни одного эвента вообще т.к. по его мнению ниче не поменялось...
Можно не удалять фреймы и даже сделать обертку события и получать извещение в IE но не понятно как удалять
Что если мы применим locable storage? Что это даст?
Поставив блокировку мы обеспечим эксклюзивный доступ к хранилищу.
Допустим мы сделаем по "очереди" для каждого слушателя. Точнее, очередли сделают сами слушатели а мастер будет
эксклюзивно в очереди писать
но если он пишет эксклюзивно - зачем блокировка?
Потому что надо удалять. Значит запись - не эксклюзивная.
Значит блокировка нужна.
Ок, каждый слушатель делает очередь, мастер блокируя хранилище пихает каждому в очередь фреймы.
Каждый слушатель по таймеру блокирует хранилище и забирает себе все фреймы после чего трет очередь.
Также каждый слушатель должен писать свое время. Не эксклюзивно.
Каждый по таймеру сбирает всех живых, мастер для мертвых затирает время и очередь.
Доступ не эксклюзивный но и пофиг, потому что на удаление только для умерших.
Что делать с выборами?
Что если тоже сделать очередь. Каждый приходит и встает в очередь быть мастером.
Каждый читает очередь, мониторит когда ведущий помрет. После этого все