JS: synchronizacia notifikacii medzi tabmi

petersveter

JS: synchronizacia notifikacii medzi tabmi
« kdy: 14. 03. 2024, 20:42:42 »
Mam web s Vue front-endom, kde je notifikacny server kam sa stranka pripaja cez websocket. Na tomto backende moze byt aktivne iba jedno prihlasenie(session id). Takze ked si uzivatel otvori stranku v novej zalozke, z povodnej ho backend odhlasi(ukonci spojenie). Lenze klient sa po odpojeni pokusi obnovit spojenie(proste ochrana proti vypadkom internetu), takze to zase odpoji novu zalozku, ktora sa po chvilke ale znovu skusi pripojt a je z toho taky ping-pong.

Nechcem povolit moznost aby jedno prihlasenie mohlo byt aktivne viac krat z roznych dovodov.

Rozmyslam preto ako synchronizovat zalozky/stav. Viem ze sa to da riesit eventami medzi zalozkami na rovnakej domene, pripadne sa da na to nejak hooknut Pinia myslim alebo hociake ulozisko ktore prehliadac podporuje, kedze ide o rovnaku domenu. Ale neviem ktore riesenie je najvhodnejsie. Takze ma napada, ci nie je lepsie to riesit nejakym service workerom(i ked s nimi nemam prakticku skusenos), takze by bolo vzdy len jedno spojenie. Alebo niecim podobnym...

Co by ste odporucili?


Re:JS: synchronizacia notifikacii medzi tabmi
« Odpověď #1 kdy: 14. 03. 2024, 20:44:23 »
Je to za "kritickým účelem"? Tedy jestli vadí, když to to někdo zkoumavý obejde ? Koneckonců, může se spustit dva různé prohlížeče nebo i jeden ve víc profilech

petersveter

Re:JS: synchronizacia notifikacii medzi tabmi
« Odpověď #2 kdy: 14. 03. 2024, 21:03:33 »
Je to za "kritickým účelem"? Tedy jestli vadí, když to to někdo zkoumavý obejde ? Koneckonců, může se spustit dva různé prohlížeče nebo i jeden ve víc profilech

Nie je to kriticke. Ale rozmyslam ze asi to zmenim na limitaciu na user id, kedze nechcem aby mal uzivatel odlisny stav napriklad na telefone a doma na pc a podobne. Problem je ze ja nesynchronizujem medzi zariadeniami stav. Cize ked user oznaci notifikacie za precitane na mobile, tak ak je online na desktope, tak mu nepride zo serveru takato informacia takze mu stale moze ukazovat neprecitane. Mozno je to na zamyslenie na rozsirenie funkcionality backendu. Ale stale plati ze jedno session id ma byt online len raz. Na mobile alebo inom pc sa moze prihlasit na novo, to je nove session id a to je v pohode.

Re:JS: synchronizacia notifikacii medzi tabmi
« Odpověď #3 kdy: 14. 03. 2024, 23:50:56 »
Pro komunikaci mezi okny ze stejné domény se používá BroadcastChannel.

Akorát netuší, co vlastně chcete. Buď povolíte uživateli být přihlášen na více záložkách, nebo mu to nepovolíte (k čemuž nevidím žádný rozumný důvod). Nevidím žádnou třetí možnost trochu mu to povolit a trochu ne.

alex6bbc

  • *****
  • 1 617
    • Zobrazit profil
    • E-mail
Re:JS: synchronizacia notifikacii medzi tabmi
« Odpověď #4 kdy: 14. 03. 2024, 23:58:44 »
podle me nejjednodussi je reseni, aby se client nesnazil automaticky obnovit spojeni.
pripadne mu backend muze poslat zpravu je konec a client nebude obnovovat spojeni.


L..

  • ****
  • 310
    • Zobrazit profil
    • E-mail
Re:JS: synchronizacia notifikacii medzi tabmi
« Odpověď #5 kdy: 15. 03. 2024, 08:28:10 »
Případně mezi okny na stejné site je sdílená localStorage a její změna vyvolá v druhých oknech event, na kterém se dá poslouchat.

petersveter

Re:JS: synchronizacia notifikacii medzi tabmi
« Odpověď #6 kdy: 21. 03. 2024, 16:28:38 »
Najskor toto je to co som hladal https://developer.mozilla.org/en-US/docs/Web/API/SharedWorker + hooknutie do Pinia.