Sobes.tech
Senior

Quali sono le caratteristiche del protocollo DDP?

sobes.tech AI

Risposta dell'AI

DDP (Protoccolo di Dati Distribuiti) è un protocollo utilizzato in Meteor (framework per lo sviluppo web e mobile) per la comunicazione tra client e server.

Caratteristiche principali:

  • Pubblicazione/Abbonamento: Il server "pubblica" dati (collezioni di documenti), e i client "si abbonano" alle pubblicazioni di loro interesse. Quando i dati sul server cambiano, vengono inviati automaticamente a tutti i client abbonati.
  • In tempo reale: Le modifiche ai dati vengono trasmesse istantaneamente, garantendo l'aggiornamento delle informazioni sul client.
  • Chiamate remote di procedure (RPC): I client possono chiamare metodi sul server per eseguire azioni specifiche.
  • Idempotenza delle chiamate: La ripetizione di una stessa chiamata con gli stessi argomenti non provoca effetti collaterali indesiderati (per la maggior parte dei metodi standard).
  • Trasporto: Di solito si utilizza WebSocket per una connessione bidirezionale persistente, ma può fallbackare su HTTP.
  • Dati: La trasmissione dei dati avviene in formato JSON.
  • Invio di dati solo quando necessario: Il server invia al client solo i dati a cui è abbonato, e solo quando questi cambiano.
  • Lavoro offline: Meteor permette ai client di salvare temporaneamente le modifiche ai dati localmente e di sincronizzarle con il server al ripristino della connessione.
// Esempio di pubblicazione sul server (Node.js)
Meteor.publish('myCollection', function() {
  return MyCollection.find({}); // Pubblica tutti i documenti della collezione
});

// Esempio di sottoscrizione sul client (JavaScript)
Meteor.subscribe('myCollection');
// Esempio di chiamata di metodo sul client (JavaScript)
Meteor.call('addDocument', { name: 'Nuovo documento' }, function(error, result) {
  if (error) {
    console.error("Errore durante l'aggiunta del documento:", error);
  } else {
    console.log("Documento aggiunto con successo:", result);
  }
});

// Esempio di implementazione del metodo sul server (Node.js)
Meteor.methods({
  addDocument: function(doc) {
    // Validazione e inserimento del documento
    return MyCollection.insert(doc);
  }
});