0Pricing
Node.js Backend Development Bootcamp · Lezione

Subscription GraphQL per dati in tempo reale

Aggiunga funzionalità in tempo reale alla sua API GraphQL usando le subscription, così i client ricevono aggiornamenti live tramite WebSocket appena cambiano i dati.

Subscription GraphQL per dati in tempo reale è una lezione Node.js Backend Development Bootcamp gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Node.js Backend Development Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Node.js Backend Development Bootcamp include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

The Three GraphQL Operations

GraphQL defines three root operation types:

  • Query: read data
  • Mutation: change data
  • Subscription: receive a stream of live updates

Queries and mutations are request/response; subscriptions keep a connection open for ongoing events.

When to Use Subscriptions

Subscriptions shine when clients need real-time data:

  • Chat messages
  • Live notifications
  • Collaborative editing
  • Live dashboards and scores

For data that rarely changes, polling a query is simpler.

WebSockets Under the Hood

Queries and mutations travel over HTTP, but subscriptions need a persistent two-way channel — a WebSocket. The server pushes events to subscribed clients without them asking again.

Defining a Subscription in the Schema

Add a Subscription type to your schema with fields clients can subscribe to. Each field is an event stream returning some type.

type Subscription {
  messageAdded(channelId: ID!): Message!
}

The PubSub Engine

Subscriptions rely on a publish/subscribe system. A PubSub instance lets your resolvers publish events and your subscriptions listen for them.

const { PubSub } = require('graphql-subscriptions');
const pubsub = new PubSub();

Publishing an Event

Inside a mutation, after saving data, publish an event on a named topic. Anyone subscribed to that topic receives the payload.

const message = await Message.create(input);
pubsub.publish('MESSAGE_ADDED', { messageAdded: message });
return message;

The Subscription Resolver

A subscription resolver returns an async iterator via asyncIterator, telling the server which topic to forward to the client.

const resolvers = {
  Subscription: {
    messageAdded: {
      subscribe: () => pubsub.asyncIterator('MESSAGE_ADDED')
    }
  }
};

Filtering Events

Often a client only cares about events for one channel. withFilter wraps the iterator and forwards only events that match the subscription's arguments.

const { withFilter } = require('graphql-subscriptions');
subscribe: withFilter(
  () => pubsub.asyncIterator('MESSAGE_ADDED'),
  (payload, vars) => payload.messageAdded.channelId === vars.channelId
)

Client Subscription Query

The client writes a subscription operation just like a query, but with the subscription keyword. The server streams results as they happen.

subscription OnMessage($id: ID!) {
  messageAdded(channelId: $id) {
    id
    text
  }
}

Scaling Across Servers

The in-memory PubSub only works on a single instance. To broadcast across many servers, swap in a backend like graphql-redis-subscriptions so events reach all connected clients.

const { RedisPubSub } = require('graphql-redis-subscriptions');
const pubsub = new RedisPubSub();

Cleaning Up Connections

Open WebSockets consume resources. The server should detect disconnects and stop streaming. Apollo Server handles much of this, but watch for orphaned subscriptions and authenticate the connection on setup.

Quick Check

Test your GraphQL subscription knowledge.

Recap

You added real-time data with GraphQL subscriptions:

  • Subscriptions stream live events over WebSockets
  • Declare a Subscription type and resolve it with asyncIterator
  • Mutations publish events; withFilter targets the right clients
  • Scale across servers with a Redis-backed PubSub and clean up connections

Now your API can power chat, notifications, and live dashboards.

Domande Frequenti

La lezione «Subscription GraphQL per dati in tempo reale» è gratuita?

Sì — il testo completo di «Subscription GraphQL per dati in tempo reale» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Node.js Backend Development Bootcamp, passa a CoddyKit PRO. Il corso Node.js Backend Development Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Subscription GraphQL per dati in tempo reale»?

Aggiunga funzionalità in tempo reale alla sua API GraphQL usando le subscription, così i client ricevono aggiornamenti live tramite WebSocket appena cambiano i dati. Eserciti Node.js Backend Development Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Node.js Backend Development Bootcamp?

Non è richiesta alcuna esperienza precedente. Node.js Backend Development Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Subscription GraphQL per dati in tempo reale»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Node.js Backend Development Bootcamp?

Sì. Ogni lezione Node.js Backend Development Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Introduzione al serverless con Node.js
  2. Principi di progettazione delle API GraphQL
  3. Creazione di un server GraphQL con Apollo
  4. Subscription GraphQL per dati in tempo reale
← Torna a Node.js Backend Development Bootcamp