Prosty problem: sprawić by w przeglądarce wiele zakładek tego samego sklepu pokazywało faktyczną ilość produktów w koszyku niezależnie od tego w której zakładce klient dodał akurat produkt do koszyka. W jaki sposób możemy sprawić by stan w jednej zakładce był automatycznie synchronizowany z innymi? Jak to wpływa na architekturę aplikacji? Problem wydaje się dość prosty i jego różne formy możemy spotkać w wielu typach aplikacji. Ilość możliwych rozwiązań tego problemu jest bardzo duża, lecz każde z nich posiada oczywiście swoje plusy i minusy oraz koszta jak i zyski.
1 of 51
Download to read offline
More Related Content
Sebastian Rosik: Architektura aplikacji przeglądarkowych w oparciu o lokalną komunikację pomiędzy wieloma dokumentami - RST CodeMeeting
3. Czego się spodziewać?
● Przegląd możliwości przeglądarek
● Czym się różnią, jakie są ich mocne i słabe strony?
● Nie będę wchodził w szczegóły
● Nie będzie kodu
○ (no może jedna linia)
18. To zależy
● Od przeglądarek w jakie celujemy i czy
dane rozwiązanie jest na nie dostępne.
● Od naszej potrzeby.
● Co akceptujemy jako poprawne
rozwiązanie a co jako hack?
28. Document w relacji
Referencja do innego dokumentu uzyskana przez
window.open() lub poprzez osadzenie innego
dokumentu w IFRAME.
http://shop.com
http://external.net
http://shop.com
Pop up Embedded
document
33. Channel Messaging API
● Musimy posiadać referencje do dokumentu
● Do dyspozycji dwa powiązane porty. Jeden transferujemy do
drugiego okna.
● Tylko dwa dokumenty mogą ze sobą rozmawiać
42. Channel Messaging API
● Cross domain
● Tylko dokumenty z relacją rodzic-dziecko
● Transfer portów komunikacyjnych
Broadcast Channel API
● Only same domain
● Full-duplex dla nasłuchujących na
kanale dokumentów
window.postMessage
● Cross domain
● Tylko dokumenty z relacją rodzic-dziecko
● Oparte na zdarzeniach, bez portów
● Wiadomości potencjalne niebezpieczne
44. LocalStorage
Komunikacja poprzez zapis wiadomości do Storage.
Pozostałe dokumentu otrzymują zdarzenie o zapisie do
Storage i mogą odczytać wiadomość.
Somewhat hackish solution™
45. LocalStorage
● Każdy załączony skrypt ma dostęp do LS co my
○ A więc może wyczyścić nam Storage
● Ograniczona przestrzeń współdzielona z innymi danymi
● Czy to jest jego odpowiedzialność?
49. Ciastka!
● Dostępne w każdej przeglądarce
● Niestety mała przestrzeń
● Ale za to można też przesłać wiadomość do serwera…
● ...nie no, żartuję.
To hackish, DON’T DO IT