Creazione di sistemi generici con pub/sub APIs tecnologia serverless in WebSockets AWS AppSync - AWS AppSync GraphQL

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di sistemi generici con pub/sub APIs tecnologia serverless in WebSockets AWS AppSync

Importante

A partire dal 13 marzo 2025, puoi creare un' PubSub API in tempo reale basata su WebSockets AWS AppSync Events. Per ulteriori informazioni, consulta Pubblicare eventi tramite WebSocket nella AWS AppSync Events Developer Guide.

Alcune applicazioni richiedono solo che WebSocket APIs i clienti ascoltino un canale o un argomento specifico. I dati JSON generici senza una forma specifica o requisiti fortemente tipizzati possono essere inviati ai clienti che ascoltano uno di questi canali secondo uno schema di pubblicazione (pub/sub) puro e semplice.

Utilizzalo AWS AppSync per implementare soluzioni semplici pub/sub WebSocket APIs con poca o nessuna conoscenza di GraphQL in pochi minuti generando automaticamente codice GraphQL sia sul backend dell'API che sul lato client.

Crea e configura pub-sub APIs

Per iniziare, procedi come segue:

  1. Accedi a AWS Management Console e apri la AppSync console.

    1. Nel pannello di controllo, scegliere Create API (Crea API).

  2. Nella schermata successiva, scegli Crea un'API in tempo reale, quindi scegli Avanti.

  3. Inserisci un nome descrittivo per la tua pub/sub API.

  4. Puoi abilitare le funzionalità API private, ma per ora ti consigliamo di tenerla disattivata. Scegli Next (Successivo).

  5. Puoi scegliere di generare automaticamente un' pub/sub API funzionante utilizzando WebSockets. Ti consigliamo di tenere disattivata questa funzionalità anche per ora. Scegli Next (Successivo).

  6. Scegli Crea API e attendi un paio di minuti. Nel tuo account verrà creata una nuova API AWS AppSync pub/sub preconfigurata. AWS

L'API utilizza i AWS AppSync resolver locali integrati (per ulteriori informazioni sull'utilizzo dei resolver locali, consulta Tutorial: Local Resolvers nella AWS AppSync Developer Guide) per gestire più pub/sub canali e WebSocket connessioni temporanee, che distribuiscono e filtrano automaticamente i dati ai client abbonati solo in base al nome del canale. Le chiamate API sono autorizzate con una chiave API.

Dopo l'implementazione dell'API, ti vengono presentati un paio di passaggi aggiuntivi per generare il codice client e integrarlo con l'applicazione client. Per un esempio su come integrare rapidamente un client, questa guida utilizzerà una semplice applicazione web React.

  1. Inizia creando un'app React standard usando NPM sul tuo computer locale:

    $ npx create-react-app mypubsub-app $ cd mypubsub-app
    Nota

    Questo esempio utilizza le librerie Amplify per connettere i client all'API di backend. Tuttavia non è necessario creare un progetto Amplify CLI localmente. Sebbene React sia il client preferito in questo esempio, le librerie Amplify supportano anche i client iOS, Android e Flutter, fornendo le stesse funzionalità in questi diversi runtime. I client Amplify supportati forniscono semplici astrazioni per interagire con i backend dell'API AWS AppSync GraphQL con poche righe di codice, incluse WebSocket funzionalità integrate completamente compatibili con il protocollo in tempo reale:AWS AppSync WebSocket

    $ npm install @aws-amplify/api
  2. Nella AWS AppSync console, seleziona JavaScript, quindi Scarica per scaricare un singolo file con i dettagli di configurazione dell'API e il codice operativo GraphQL generato.

  3. Copia il file scaricato /src nella cartella del tuo progetto React.

  4. Quindi, sostituisci il contenuto del src/App.js file boilerplate esistente con il codice client di esempio disponibile nella console.

  5. Utilizzate il seguente comando per avviare l'applicazione localmente:

    $ npm start
  6. Per testare l'invio e la ricezione di dati in tempo reale, apri due finestre del browser e accedilocalhost:3000. L'applicazione di esempio è configurata per inviare dati JSON generici a un canale codificato denominato. robots

  7. In una delle finestre del browser, inserisci il seguente blob JSON nella casella di testo, quindi fai clic su Invia:

    { "robot":"r2d2", "planet": "tatooine" }

Entrambe le istanze del browser sono iscritte al robots canale e ricevono i dati pubblicati in tempo reale, visualizzati nella parte inferiore dell'applicazione web:

Esempio di app React per API pub/sub

Tutto il codice API GraphQL necessario, inclusi lo schema, i resolver e le operazioni, viene generato automaticamente per consentire un caso d'uso generico. pub/sub Sul backend, i dati vengono pubblicati sull'endpoint in tempo reale AWS AppSync dell'utente con una mutazione GraphQL come la seguente:

mutation PublishData { publish(data: "{\"msg\": \"hello world!\"}", name: "channel") { data name } }

Gli abbonati accedono ai dati pubblicati inviati al canale temporaneo specifico con un abbonamento GraphQL correlato:

subscription SubscribeToData { subscribe(name:"channel") { name data } }

Implementazione di pub-sub APIs nelle applicazioni esistenti

Nel caso in cui sia sufficiente implementare una funzionalità in tempo reale in un'applicazione esistente, questa configurazione pub/sub API generica può essere facilmente integrata in qualsiasi applicazione o tecnologia API. Sebbene vi siano vantaggi nell'utilizzare un singolo endpoint API per accedere, manipolare e combinare in modo sicuro i dati provenienti da una o più fonti di dati in una singola chiamata di rete con GraphQL, non è necessario convertire o ricostruire da zero un'applicazione esistente basata su REST per sfruttare le funzionalità in tempo reale di GraphQL. AWS AppSync Ad esempio, potresti avere un carico di lavoro CRUD esistente in un endpoint API separato con i client che inviano e ricevono messaggi o eventi dall'applicazione esistente all' pub/sub API generica solo in tempo reale e per pub/sub scopi.