GraphQL-rajapinnat Spring Bootilla · Oppitunti

WebSocketien integrointi Springiin

Määrittäkää Spring Boot -sovellukseen WebSocket-tuki, jotta tilauksia varten voidaan muodostaa pysyviä asiakas-palvelin-yhteyksiä.

Oppitunti 3/411 vaihetta

WebSocketien integrointi Springiin on ilmainen GraphQL-rajapinnat Spring Bootilla-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu GraphQL-rajapinnat Spring Bootilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. GraphQL-rajapinnat Spring Bootilla-kurssilla on yhteensä 4 oppituntia.

WebSocketit reaaliaikaisille tiedoille

Tervetuloa! Tässä oppitunnissa yhdistämme WebSocketit Spring Bootiin. Tämä on tärkeää reaaliaikaisten ominaisuuksien, kuten GraphQL-tilausten, mahdollistamiseksi.

WebSocketit tarjoavat pysyvän, kaksisuuntaisen viestintäkanavan asiakkaan ja palvelimen välille yhden pitkäkestoisen TCP-yhteyden kautta.

Miksi WebSocketit sopivat tilauksiin?

Toisin kuin perinteiset HTTP-pyynnöt, jotka ovat lyhytkestoisia, GraphQL-tilaukset tarvitsevat jatkuvan yhteyden, jotta tietopäivitykset voidaan työntää asiakkaille niiden tapahtuessa.

WebSocketit sopivat tähän täydellisesti, koska ne ylläpitävät avointa yhteyttä ja sallivat palvelimen lähettää tietoja asiakkaalle milloin tahansa ilman uutta pyyntöä.

Riippuvuuden lisääminen

Ensin meidän on lisättävä Spring Bootin WebSocket-starter-riippuvuus projektiimme. Se tuo mukaan kaikki WebSocket-tuen käyttöön tarvittavat kirjastot.

Lisätkää Gradle-projektissa seuraava rivi tiedostoon build.gradle:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-websocket'
}

WebSocket-viestivälittäjän käyttöönotto

Springissä käytämme annotaatioita tiettyjen toimintojen ottamiseen käyttöön. WebSocketien viestivälittäjää varten käytämme annotaatiota @EnableWebSocketMessageBroker.

Tämä annotaatio ottaa käyttöön STOMP-protokollaa WebSocketin päällä käyttävän viestivälittäjän, joka tarjoaa tehokkaan tavan viestien käsittelyyn.

WebSocket-päätepisteiden määrittäminen

Tarvitsemme määritysluokan, joka laajentaa luokkaa WebSocketMessageBrokerConfigurer. Tämän luokan avulla voimme mukauttaa WebSocket-asetuksiamme.

registerStompEndpoints()-metodia käytetään sen URL-päätepisteen määrittämiseen, johon asiakkaat muodostavat yhteyden WebSocket-viestintää varten.

SockJS-vararatkaisun lisääminen

Kun rekisteröimme päätepisteen, lisäämme siihen usein .withSockJS()-kutsun. SockJS on JavaScript-kirjasto, joka tarjoaa WebSocketin kaltaisen rajapinnan.

Se tarjoaa vararatkaisuja, kuten HTTP-suoratoiston tai pitkän kyselyn, selaimille, jotka eivät tue WebSocketeja täysin, sekä ympäristöihin, joissa välityspalvelimet häiritsevät niiden toimintaa.

Viestivälittäjän määrittäminen

configureMessageBroker()-metodi määrittää itse viestivälittäjän. Se määrittää, miten viestit reititetään asiakkaiden ja sovelluksen välillä.

  • enableSimpleBroker("/topic"): Ottaa käyttöön muistissa toimivan viestivälittäjän kohteille, joiden etuliite on /topic. Asiakkaat tilaavat näitä aiheita.
  • setApplicationDestinationPrefixes("/app"): Määrittää etuliitteet viesteille, jotka on tarkoitettu sovelluksemme @MessageMapping-annotaatiolla merkityille metodeille.

Täydellinen WebSocket-määritys

Tässä on minimaalinen Spring Boot -sovellus, joka esittelee WebSocket-määrityksen. Kokeilkaa sen suorittamista nähdäksenne, kuinka Spring alustaa WebSocket-palvelimen!

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

@SpringBootApplication
public class Main {
  public static void main(String[] args) {
    SpringApplication.run(Main.class, args);
    System.out.println("WebSocket server ready on port 8080!");
    System.out.println("Connect at ws://localhost:8080/ws-connect");
  }

  @Configuration
  @EnableWebSocketMessageBroker
  static class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

      @Override
      public void registerStompEndpoints(StompEndpointRegistry registry) {
          registry.addEndpoint("/ws-connect")
                  .withSockJS(); 
      }

      @Override
      public void configureMessageBroker(MessageBrokerRegistry config) {
          config.enableSimpleBroker("/topic");
          config.setApplicationDestinationPrefixes("/app");
      }
  }
}

Yhdistäminen GraphQL-tilauksiin

Tämän WebSocket-infrastruktuurin avulla GraphQL-tilausresolverimme edellisestä oppitunnista voivat nyt julkaista tapahtumia.

Kun resolveri julkaisee tapahtuman, Springin viestivälittäjä varmistaa, että kaikille asiaankuuluvan /topic-aiheen tilaajille ilmoitetaan siitä välittömästi heidän avoimen WebSocket-yhteytensä kautta.

Pikatarkistus: WebSocket-määritys

Tarkastelkaa seuraavaa riviä WebSocket-määrityksestämme:

config.enableSimpleBroker("/topic");

Mikä on /topic-etuliitteen ensisijainen tarkoitus tässä yhteydessä?

Kertaus: WebSocketit Springissä

Hienoa työtä! Olette oppineet yhdistämään WebSocketit Spring Bootiin vahvan reaaliaikaisen viestintäkerroksen tarjoamiseksi.

  • Lisäsimme WebSocket-starter-riippuvuuden.
  • Käytimme annotaatioita @EnableWebSocketMessageBroker ja WebSocketMessageBrokerConfigurer.
  • Määritimme STOMP-päätepisteet, kuten /ws-connect-päätepisteen SockJS:n kanssa.
  • Määritimme viestivälittäjän etuliitteillä, kuten /topic tilauksia varten ja /app sovelluskohtaisia viestejä varten.

Tämä määritys muodostaa perustan reaaliaikaisten GraphQL-tilausten välittämiselle!

Aloita maksutta

Opi GraphQL-rajapinnat Spring Bootilla tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”WebSocketien integrointi Springiin” ilmainen?

Kyllä – oppitunnin ”WebSocketien integrointi Springiin” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko GraphQL-rajapinnat Spring Bootilla-kurssin, päivitä CoddyKit PROhon. GraphQL-rajapinnat Spring Bootilla-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”WebSocketien integrointi Springiin”?

Määrittäkää Spring Boot -sovellukseen WebSocket-tuki, jotta tilauksia varten voidaan muodostaa pysyviä asiakas-palvelin-yhteyksiä. Harjoittelet GraphQL-rajapinnat Spring Bootilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni GraphQL-rajapinnat Spring Bootilla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin GraphQL-rajapinnat Spring Bootilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”WebSocketien integrointi Springiin”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä GraphQL-rajapinnat Spring Bootilla-oppitunnilla?

Kyllä. Jokainen GraphQL-rajapinnat Spring Bootilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. GraphQL-tilausten ymmärtäminen
  2. Reaaliaikaisten päivitysten toteuttaminen
  3. WebSocketien integrointi Springiin
  4. Tilausten suodatus ja skaalaus
← Takaisin: GraphQL-rajapinnat Spring Bootilla