You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
startStandaloneServer ei kuitenkaan mahdollsita subscriptioiden lisäämistä sovellukseen, joten siirtymään järeämmän [expressMiddleware](https://www.apollographql.com/docs/apollo-server/api/express-middleware/) funktion käyttöön. Kuten funktion nimi jo vihjaa, kyseessä on Expressin middleware, eli sovellukseen on konfiguroitava myös Express jonka middlewarena GraphQL-server tulee toimimaan.
348
+
startStandaloneServer ei kuitenkaan mahdollista subscriptioiden lisäämistä sovellukseen, joten siirrytään järeämmän [expressMiddleware](https://www.apollographql.com/docs/apollo-server/api/express-middleware/) funktion käyttöön. Kuten funktion nimi jo vihjaa, kyseessä on Expressin middleware, eli sovellukseen on konfiguroitava myös Express jonka middlewarena GraphQL-server tulee toimimaan.
349
349
350
350
Asennetaan Express:
351
351
@@ -457,13 +457,13 @@ type Subscription {
457
457
458
458
Eli kun uusi henkilö luodaan, palautetaan henkilön tiedot kaikille tilaajille.
459
459
460
-
Asennetaan tarvittavast kirjastot:
460
+
Asennetaan tarvittavat kirjastot:
461
461
462
462
```
463
463
npm install graphql-ws ws @graphql-tools/schema
464
464
```
465
465
466
-
Tiedosto <i>index.js</i> muuttuu seraavasti
466
+
Tiedosto <i>index.js</i> muuttuu seuraavasti
467
467
468
468
```js
469
469
// highlight-start
@@ -537,11 +537,11 @@ const start = async () => {
537
537
start()
538
538
```
539
539
540
-
GraphQL:n Queryt ja mutaatiot hoidetaan HTTP-protokollaa käyttäen. Tilausten osalta kommunikaatio tapahuu[WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API)-yhteydellä.
540
+
GraphQL:n Queryt ja mutaatiot hoidetaan HTTP-protokollaa käyttäen. Tilausten osalta kommunikaatio tapahtuu[WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API)-yhteydellä.
541
541
542
542
Yllä oleva konfio luo palvelimeen HTTP-pyyntöjen kuuntelun rinnalle WebSocketeja kuuntelevan palvelun, jonka se sitoo palvelimen GraphQL-skeemaan. Määrittelyn toinen osa rekisteröi funktion, joka sulkee WebSocket-yhteyden palvelimen sulkemisen yhteydessä. Jos olet kiinnostunut tarkemmin konfiguraatioista, selittää Apollon [dokumentaatio](https://www.apollographql.com/docs/apollo-server/data/subscriptions) suhteellisen tarkasti mitä kukin koodirivi tekee.
543
543
544
-
Toisin kuin HTTP:n yhteydessä, WebSocketteja käyttäessä myös palvelin voi olla datan lähettämisessä aloitteellinen osapuoli. Näinollen WebSocketit sopivat hyvin GraphQL:n tilauksiin, missä palvelimen on pystyttävä kertomaan kaikille tietyn tilauksen tehneille tilausta vastaavan tapahtuman (esim. henkilön luominen) tapahtumisesta.
544
+
Toisin kuin HTTP:n yhteydessä, WebSocketteja käyttäessä myös palvelin voi olla datan lähettämisessä aloitteellinen osapuoli. Näin ollen WebSocketit sopivat hyvin GraphQL:n tilauksiin, missä palvelimen on pystyttävä kertomaan kaikille tietyn tilauksen tehneille tilausta vastaavan tapahtuman (esim. henkilön luominen) tapahtumisesta.
545
545
546
546
Määritellylle tilaukselle _personAdded_ tarvitaan resolveri. Myös lisäyksen tekevää resolveria _addPerson_ on muutettava siten, että uuden henkilön lisäys aiheuttaa ilmoituksen tilauksen tehneille.
547
547
@@ -623,7 +623,7 @@ pubsub.publish('PERSON_ADDED', { personAdded: person })
623
623
624
624
Koodirivin suoritus saa siis aikaan sen, että kaikille iteraattoriin <i>PERSON\_ADDED</i> rekisteröidyille clienteille lähtee WebSocketin avulla tieto luodusta käyttäjästä.
625
625
626
-
Tilauksia on mahdollista testata Apollo Exploreilla avulla seuraavasti:
626
+
Tilauksia on mahdollista testata Apollo Explorerin avulla seuraavasti:
627
627
628
628

629
629
@@ -636,7 +636,7 @@ subscription Subscription {
636
636
637
637
Kun tilauksen suorittavaa sinistä PersonAdded-painiketta painetaan, jää Explorer odottamaan tilaukseen tulevia vastauksia. Aina kun sovellukseen lisätään uusia käyttäjiä (joudut tekemään lisäyksen frontendista tai toisesta selainikkunasta), tulee tieto niistä Explorerin oikeaan reunaan.
638
638
639
-
Jos tilaus ei toimi, saatat tarkasta, että yhteysasetukset on määritelty oikein:
639
+
Jos tilaus ei toimi, tarkasta, että yhteysasetukset on määritelty oikein:
640
640
641
641

642
642
@@ -788,7 +788,7 @@ const App = () => {
788
788
}
789
789
```
790
790
791
-
Ratkaisussa on kuitenkin pieni ongelma. Itse lisätty henkilö tulee nyt välimuistiin sekä renderöityy ruudulle kahteen kertaan, sillä myös komponentti PersonForm lisää uuden henkilön välimuistin.
791
+
Ratkaisussa on kuitenkin pieni ongelma. Itse lisätty henkilö tulee nyt välimuistiin sekä renderöityy ruudulle kahteen kertaan, sillä myös komponentti PersonForm lisää uuden henkilön välimuistiin.
792
792
793
793
Ratkaistaan ongelma varmistamalla, että sama henkilö ei päädy välimuistiin kahteen kertaan:
794
794
@@ -833,7 +833,7 @@ const App = () => {
833
833
}
834
834
```
835
835
836
-
Funktio _updateCache_ lisää uuden henkilön tiedot välimuistin queryn <i>allPersons</i> tallentamiin henkilöihin, mutta varmistaa kuitenkin funktion _uniqByName_ avulla, että yhden henkilön tiedot eivät tallennu välimuitiin useampaan kertaan.
836
+
Funktio _updateCache_ lisää uuden henkilön tiedot välimuistin queryn <i>allPersons</i> tallentamiin henkilöihin, mutta varmistaa kuitenkin funktion _uniqByName_ avulla, että yhden henkilön tiedot eivät tallennu välimuistiin useampaan kertaan.
837
837
838
838
Funktiota _updateCache_ voidaan hyödyntää myös uuden henkilön lisäyksen yhteydessä tapahtuvassa välimuistin päivityksessä:
839
839
@@ -1067,7 +1067,7 @@ query {
1067
1067
1068
1068
### Tehtävien palautus ja suoritusmerkinnän pyytäminen
1069
1069
1070
-
Tämän osat palautetaan edellisistä osista poiketen [palautussovelluksessa](https://studies.cs.helsinki.fi/stats/courses/fs-graphql) omaan kurssi-instanasiinsa. Huomaa, että tarviset suoritukseen vähintään 22 tehtävää!
1070
+
Tämän osat palautetaan edellisistä osista poiketen [palautussovelluksessa](https://studies.cs.helsinki.fi/stats/courses/fs-graphql) omaan kurssi-instanssiinsa. Huomaa, että tarviset suoritukseen vähintään 22 tehtävää!
1071
1071
1072
1072
Jos haluat suoritusmerkinnän, merkitse kurssi suoritetuksi:
0 commit comments