Sobes.tech
Senior

DDP protokolunun xüsusiyyətləri nələrdir?

sobes.tech Süni İntellekt

AI-dan cavab

DDP (Paylanmış Məlumat Protokolu) Meteor (veb və mobil inkişaf üçün çərçivə) daxilində müştəri və server arasında əlaqə üçün istifadə olunan protokoldur.

Əsas xüsusiyyətlər:

  • Nəşr və Abunəlik: Server "məlumatları" (sənəd kolleksiyaları) "nəşr edir" və müştərilər maraqlandıqları nəşrlərə "abunə olurlar". Serverdəki məlumatlar dəyişdikdə, onlar avtomatik olaraq bütün abunə olan müştərilərə göndərilir.
  • Həqiqi vaxtda: Məlumat dəyişiklikləri dərhal ötürülür, bu da müştəri üzərində məlumatların aktual qalmasını təmin edir.
  • Uzaqdan Prosedur Çağırışları (RPC): Müştərilər, serverdəki metodları çağıraraq müəyyən əməliyyatları həyata keçirə bilərlər.
  • Çağırışların idempotentliyi: Eyni arqumentlərlə təkrarlanan çağırışlar istənməyən yan təsirlərə səbəb olmur (əksər standart metodlar üçün).
  • Daşıma: Adətən WebSocket istifadə olunur, davamlı iki tərəfli əlaqə üçün, lakin HTTP-ə fallback edə bilər.
  • Məlumatlar: Məlumatların ötürülməsi JSON formatında həyata keçirilir.
  • Yalnız lazım olduqda məlumat göndər: Server, yalnız abunə olunan və dəyişiklik olduqda məlumatları göndərir.
  • Çevrimdışı işləmə: Meteor, müştərilərə məlumatlarda müvəqqəti olaraq dəyişiklikləri yerli olaraq saxlama və əlaqə bərpa olunduqda onları serverlə sinxronizasiya etməyə imkan verir.
// Serverdə nəşr nümunəsi (Node.js)
Meteor.publish('myCollection', function() {
  return MyCollection.find({}); // Kolleksiyadakı bütün sənədləri nəşr edir
});

// Müştəri tərəfində abunəlik nümunəsi (JavaScript)
Meteor.subscribe('myCollection');
// Müştəri tərəfində metod çağırış nümunəsi (JavaScript)
Meteor.call('addDocument', { name: 'Yeni sənəd' }, function(error, result) {
  if (error) {
    console.error("Sənəd əlavə edilərkən xəta:", error);
  } else {
    console.log("Sənəd uğurla əlavə olundu:", result);
  }
});

// Serverdə metodun həyata keçirilməsi nümunəsi (Node.js)
Meteor.methods({
  addDocument: function(doc) {
    // Doğrulama və sənədin əlavə olunması
    return MyCollection.insert(doc);
  }
});