Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno [Node.js | JS] Dvojitý dynamický service-worker a CORS.

Zdravím,

čo potrebujem spraviť, myslím že to slovne nevysvetlím, takže som to skúsil nakresliť. Je to vôbec možné spraviť?

[6hNi6MR.png]

farby oddelujú rôzne service-workery. Zelený je teda výstupom serveru A a fialový výstupom serveru B, ale obe bude client sťahovať zo serveru B.
Client žiaľ nemôže sťahovať zelený priamo zo serveru A, lebo server A neposkytuje žiadnu webstránku, ale dáta ktoré prijme zo serveru A by som potreboval aby zelený uchovával. Stále ani neviem ako by sa preniesol zelený sw.js zo serveru A do serveru B. Pričom prenos by bol inicializovaný serverom A.

každý server má vlastnú doménu.

1. a 2. inicializuje server A pri spustení určitého skriptu (funkcie). Prvá inicializace skriptu je hneď pri štartu serveru, server B si bude uchovávať zelený a poskytovať ho clientom, kým server A neinicializuje znova 1. a 2.
3. a 4. sťahuje client na požiadavku.

Řešení:

Asi jsem to nepochopil, ale kdyz nechas klienta komunikovat jen s B (data z A budou cestovat pres B - na B se rozhodne jestli mam vzit data z B nebo volat A), tak se vyhnes temhle masakrum a nemusis resit ani CORS...

Předmět Autor Datum
Asi jsem to nepochopil, ale kdyz nechas klienta komunikovat jen s B (data z A budou cestovat pres B…
MaSo 15.03.2019 13:18
MaSo
hmm, dobrý nápad, ale to rieši len CORS. Stále však potrebujem aby som mal 2 service-workery (alebo…
Mlocik97 15.03.2019 13:21
Mlocik97
rozmýšľam nad tým, a ako dosť by to veľa vecí zjednodušilo. Teraz vlastne už len vyriešiť aby servi…
Mlocik97 15.03.2019 13:32
Mlocik97
Jj. To uz zalezi prece jen na tom jake API z A vystavis, aby sw.js umel pres nej pracovat s A i B.…
MaSo 15.03.2019 13:34
MaSo
dík,... nechápem prečo ma to rovno nenapadlo riešiť takto. Si mi dosť pomohol. Už cca viem ako to sp…
Mlocik97 15.03.2019 13:43
Mlocik97
Ešte ďalej rozmýšlam, možno když stiahnem dáta z A do B, tak nemusím ani riešiť presun sw.js medzi t…
Mlocik97 15.03.2019 14:18
Mlocik97
máš u mňa pivo,... trocha som sa s tým hral, a nakoniec čo sa týka service-workerov tak mi stačilo z… poslední
Mlocik97 15.03.2019 15:02
Mlocik97

hmm, dobrý nápad, ale to rieši len CORS. Stále však potrebujem aby som mal 2 service-workery (alebo je možné aby jeden service-worker obstarával osobytne dvoje dáta a nad každými robil operácie samostatne, problém ale asi by bol že když sa zmení súbor sw.js, ktorý client stiahne, tak automaticky vynúti znovustiahnutie všetkých súborov, nie?) a každý uchovával dáta z `iného` serveru. Resp. jeden zo serveru A a druhý zo serveru B. Pretože trebárs dáta na serveru B sa menia v iných časoch ako na servery A, a nechcem aby sa kvôli zmene dáta na A service-worker sťahoval aj nezmenené dáta z B a naopak.

rozmýšľam nad tým, a ako dosť by to veľa vecí zjednodušilo.

Teraz vlastne už len vyriešiť aby service-workery na clientovy osobitne uchovávali dáta zo serveru B a dáta zo serveru A prijaté zo serveru B. A jak by server A mohol poslať dáta a sw.js serveru B.

dík,... nechápem prečo ma to rovno nenapadlo riešiť takto. Si mi dosť pomohol. Už cca viem ako to spraviť, tie service-workery budú asi najťažšie na napísanie. Dokonca teraz jak som nad tým začal viac rozmýšlať tak ma napadlo že zo serveru A môžem duplicitne na servery B a teda doméne B poskytovať súbory zo serveru A napríklad skrz URL domain/api/* a na domain/* by som mal všetko zo serveru B, tak bych vlastne len v service-workery nastavil URL na cashovanie v prvom prípade len '/api' a v druhom by som mal všetko ostatné okrem '/api'. Takže by som musel len vyriešiť post dát zo serveru A do serveru B. Len teraz jak to zmeniť na server-sidu aby z pôvodného sw.js to vytvorilo požadovaný sw.js. Asi sa ešte pohrám s replace() a regexom.

Ešte ďalej rozmýšlam, možno když stiahnem dáta z A do B, tak nemusím ani riešiť presun sw.js medzi týmito servermi. V podstate môžem ten sw.js vytvoriť taktiež na servery B. Takže jediné čo bude server A robiť mimo poskytovania API je že pri zavolaní funkcie zainicializuje poslanie dát serveru B, server B je prijme a po prijatí vytvorím zelený sw.js takže vlastne riešenie serveru A bude triviálne. A mimo postu dát všetko budem robiť na servery B. Tak to hodne hodne moc zjednodušuje situáciu. A má to ďalšiu výhodu. Ušetrím dosť prostriedkov na servery A.

máš u mňa pivo,... trocha som sa s tým hral, a nakoniec čo sa týka service-workerov tak mi stačilo zmeniť 4 riadky kódu. čo sa týka server-sidu čo rieši tieto service-workery tak mi stačilo zmeniť 6 riadkov kódu. V podstate už len potrebujem vyriešiť synchronizáciu dát zo serveru A k serveru B. Takže vlastne server B když nemá dáta, zavolá funkciu ktorá pošle požiadavku na server A pre stiahnutie dát. To je vše čo potrebujem vyriešiť na servery B. A na servery A potrebujem aby když sa zmenia dáta tak sa zavolá funkcia ktorá pošle dáta serveru B aj bez toho aby si je server B pýtal. Server B je následne prijme. To je vše čo teraz mi stačí riešiť. Hodne si mi pomohol máš u mňa :beer:

Zpět do poradny Odpovědět na původní otázku Nahoru