GraphQL.cz/Fórum/Jednoduchý příklad GraphQL subscriptions na mobilu?

Jednoduchý příklad GraphQL subscriptions na mobilu?

Zajímalo by mě, jestli by mi někdo mohl ukázat, jak se dělají GraphQL subscriptions na mobilních aplikacích. Jsem vývojář a už nějakou dobu se snažím proniknout do světa GraphQL, ale ta část se subscriptions mi zatím uniká. Rád bych viděl nějaký jednoduchý příklad, abych si to mohl osahat v praxi. Mám na mysli něco, co by fungovalo jak pro iOS, tak pro Android. Myslím, že by mě zajímalo, jak se nastavují předplatné a jak se pak dostávají data do aplikace v reálném čase. Taky bych chtěl vědět, jak to vypadá z pohledu kódu – třeba jestli je potřeba nějaký speciální framework nebo knihovnu. Jaké nástroje používáte na práci s GraphQL subscriptions? A co třeba websockety? Ovlivňuje to nějak výkon aplikace? Doufám, že mi někdo pomůže a ukáže mi alespoň základní scénář. Děkuju!

132 slov
1.3 minut čtení
20. 8. 2022
Vladimíra Vobořilová

Pokud chceš začít se subscriptions v GraphQL na mobilech, tak nejlepší je kouknout na Apollo Client, ten je super pro iOS i Android. Na iOS to můžeš implementovat pomocí Apollo iOS knihovny a na Androidu použiješ Apollo Android. Obě tyhle knihovny mají podporu pro websockety, což je klíčový pro real-time data.

Nejdřív si musíš nastavit server, který podporuje GraphQL subscriptions – většinou to bude něco jako Apollo Server nebo Hasura. V aplikaci pak vytvoříš websocket spojení a subscribneš se k nějakému tématu (např. nové zprávy). Pak už jen čekáš na příchozí data a zpracováváš je v UI. Je dobrý mít na paměti, že můžeš narazit na problémy s výkonem, pokud bude hodně dat nebo hodně uživatelů, takže si dej pozor na to, kolik subscriptions máš aktivních.

Jinak co se týče kódu, budeš potřebovat definovat query pro subscription a pak používat subscribeToMore nebo něco podobného v Apollo klientovi. Takhle dostaneš aktualizace automaticky do tvý aplikace bez nutnosti refreshování. Zkus si udělat nějaký jednoduchý projekt, třeba chatovací aplikaci, to ti pomůže pochopit víc. Takže hodně štěstí!

174 slov
1.7 minut čtení
1. 11. 2023
Richard Dunka

Takže k tomu GraphQL subscriptions – v podstatě potřebuješ websockety, aby ses dostal k těm datům v reálném čase. Na Androidu klidně použij Apollo Client, to má dobrou podporu pro subscriptions. Na iOS můžeš použít Apollo nebo třeba urql. Obecně se ti to hodí, když chceš sledovat změny na serveru – třeba u chatovacích aplikací nebo notifikací.

Nejdřív se musíš připojit k websocketu a pak si připravíš subscription dotaz. Ten dotaz pak pošleš na server a jakmile se něco změní, server ti pošle aktualizaci, kterou si pak můžeš zpracovat v aplikaci.

Co se týče výkonu, tak je to o tom, jak optimalizovaný máš server a kolik dat posíláš. Když to budeš mít dobře nastavené, tak by to mělo jít bez problému. Každopádně doporučuju začít s nějakým jednoduchým příkladem a postupně to rozšiřovat - třeba udělat chat, kde uvidíš, jak ty subscriptions fungují v praxi. Takže nezapomeň na ty websockety a uvidíš, že ti to nakonec půjde.

156 slov
1.6 minut čtení
9. 2. 2023
Kristýna Zajícová

Subscriptions v GraphQL jsou super pro real-time data, ať už děláš na iOS nebo Android. Na mobilních platformách většinou využíváš knihovny jako Apollo Client nebo Relay. Tyhle knihovny ti umožní jednoduše nastavit websockety pro připojení k serveru.

Pro základní příklad si můžeš představit, že chceš sledovat nové zprávy v chatu. Na serveru bys měl definovanou subscription, třeba messageAdded. Klient se pak připojí na tuto subscription pomocí websocketu. Na iOS použiješ Apollo iOS, na Android Apollo Android nebo jinou obdobnou knihovnu.

Kód by zhruba vypadal takto:

Na serveru:

subscription messageAdded \{
  message \{
    id
    content
    user
  \}
\}

Na klientovi pak subscribuješ tímto způsobem:

client.subscribe(\{ query: MESSAGE_ADDED \}).subscribe((\{ data \}) =\> \{
  console.log(data.message);
  // Zde aktualizuj UI s novou zprávou
\});

Websockety jsou fajn, ale mohou mít vliv na výkon, pokud jich máš hodně nebo pokud server nevydrží zátěž. Ale pokud je to správně nastavené, neměl bys mít problém. Zkus si hrát s těmi knihovnami a uvidíš, jak to funguje v reálu.

165 slov
1.7 minut čtení
13. 3. 2023
Markéta Kafková
GraphQL.cz/Články/GraphQL a mobilní zařízení
Použití Subscriptions v GraphQL pro Real-time Funkce na Mobilních ZařízeníchObjevte, jak implementovat subscriptions v GraphQL a přinést reálné aktualizace uživatelům mobilních aplikací. Zjistěte, jak zlepšit uživatelskou zkuš...
1000 slov
10 minut čtení
27. 7. 2021
Ondřej Kučera
Přečíst článek
Podobné otázky