Mercure-Hub: Pradžia su Mercure-hub

Ši dokumentacija yra Pradžia vadovo dalis. Visą vadovą rasite čia: Kaip pradėti naudotis Mercure-hub.

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti Mercure-Hub cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:

  • Neriboti užklausų ir pranešimų dydžiai.
  • Pritaikomas domeno vardas, apsaugotas HTTPS (pavyzdžiui, https://real-time.jūsų-įmonė.com).
  • Lengvi atnaujinimai vienu paspaudimu.
  • Optimali veikla ir tvirta sauga, užtikrinama privačiu ir dedikuotu VM.
  • Prieinama 🇪🇺 Europoje ir 🇺🇸 JAV.

Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių, kad išbandytumėte Stackhero Mercure-Hub cloud hosting sprendimą!

Kliento pusėje (jūsų front end) paprastas JavaScript kodas, naudojantis HTML5 SSE API, yra viskas, ko jums reikia.

Pastaba: Šiame pavyzdyje prenumeratorius nėra autentifikuotas. Kad šis pavyzdys veiktų, turite leisti anoniminius prenumeratorius Stackhero prietaisų skydelyje.

const endpoint = '<XXXXXX>.stackhero-network.com';

const url = new URL('https://' + endpoint + '/.well-known/mercure');

// Pridėti temas klausymui
url.searchParams.append('topic', `https://${endpoint}/users/1234`);
url.searchParams.append('topic', `https://${endpoint}/books/1`);

const eventSource = new EventSource(url);

// Kiekvieną kartą, kai paskelbiama atnaujinimas, iškviečiamas atgalinis skambutis
eventSource.onmessage = e => console.log(e);

Serverio pusėje (jūsų back end), kai norite išsiųsti atnaujinimą, tiesiog siųskite POST užklausą į Mercure-hub API. Žemiau pateiktas pavyzdys naudojant Node.js kartu su JsonWebToken ir Request bibliotekomis:

const jwt = require('jsonwebtoken');
const request = require('request');

const endpoint = '<XXXXXX>.stackhero-network.com';
const publisherJwtKey = '<your publisher JWT key>';

// Apibrėžti duomenis siuntimui
const data = {
  // Tema, kurioje bus siunčiami duomenys
  topic: `https://${endpoint}/books/1`,

  // Duomenys, kurie bus siunčiami į temą
  data: JSON.stringify({
    available: false,
    date: new Date()
  })
};

// Generuoti bearer tokeną
const bearer = jwt.sign(
  { mercure: { publish: [ data.topic ] } },
  publisherJwtKey,
  {
    expiresIn: 60, // Tokenas galioja vieną minutę
    noTimestamp: true // Neįtraukti 'išduota' laiko žymės, kad išvengtumėte "Token used before issued" klaidų
  }
);

// Siųsti duomenis į Mercure-hub, kad jis išplatintų atnaujinimą klientams
request.post(
  {
    url: `https://${endpoint}/.well-known/mercure`,
    auth: { bearer },
    form: data
  },
  (err, res) => err ? console.error(err) : console.log(res)
);

Ir viskas! Dabar turite prenumeratorių front end ir leidėją back end, kurie veikia kartu sklandžiai.