Usługa Javascript Pub/Sub
Co to dokładnie jest?
Usługa Pub/Sub to wzorzec projektowy, który umożliwia komunikację między różnymi modułami aplikacji internetowej bez zależności od siebie. Pozwala wydawcom wysyłać wiadomości do subskrybentów bez konieczności posiadania o nich jakiejkolwiek wiedzy. Wydawcy mogą publikować wiadomości w temacie, a subskrybenci mogą subskrybować ten temat, aby otrzymywać wiadomości z tych tematów.
Ten rodzaj projektowania jest głównie przydatny do tworzenia aplikacji internetowych działających w czasie rzeczywistym. Na przykład, jeśli tworzymy aplikację do czatu, możemy użyć usługi Pub/Sub do wysyłania wiadomości od jednego użytkownika do drugiego w czasie rzeczywistym. Można to osiągnąć, ponieważ usługa Pub/Sub pozwala na asynchroniczną obsługę zdarzeń.
Jak to działa ?
Usługa Pub/Sub zazwyczaj składa się z trzech głównych elementów:
- Wydawca : Wydawca jest odpowiedzialny za wysyłanie wiadomości do tematów. Może to być dowolna część aplikacji, która musi wysyłać wiadomości.
- Temat : miejsce, w którym publikowane są wiadomości. Subskrybenci mogą subskrybować temat, aby otrzymywać wiadomości.
- Subskrybent : Subskrybent jest odpowiedzialny za otrzymywanie wiadomości z tematu. Może to być dowolna część aplikacji, która musi odbierać komunikaty.
const subscribers = {};
function publish(topic, message) {
if (!Array.isArray(subscribers[topic])) {
return;
}
subscribers[topic].forEach(
(callback) => callback(message)
);
}
function subscribe(topic, callback) {
if (!Array.isArray(subscribers[topic])) {
subscribers[topic] = [];
}
const index = subscribers[topic].push(callback) - 1;
return {
unsubscribe() {
subscribers[topic].splice(index, 1);
}
}
}
export { publish, subscribe };
// Example usage
// Subscribing to a new topic
const subscription = pubSub.subscribe("event", data => {
console.log(`"event", was published with this data: ${data.msg}`);
})
// unsubscribing
subscription.unsubscribe();
// Publishing a message
const message = {
msg: "Publishing a new topic"
};
pubSub.publish("event", message);
Skupmy się na metodzie subskrypcji.
function subscribe(topic, callback) {
if (!Array.isArray(subscribers[topic])) {
subscribers[topic] = [];
}
const index = subscribers[topic].push(callback) - 1;
return {
unsubscribe() {
subscribers[topic].splice(index, 1);
}
}
}
Usługa publikowania
function publish(topic, message) {
if (!Array.isArray(subscribers[topic])) {
return;
}
subscribers[topic].forEach(
(callback) => callback(message)
);
}
Dlaczego powinniśmy go używać?
Luźne powiązanie: Jedną z największych zalet korzystania z systemu publikowania/subskrybowania jest luźne powiązanie. Jak już mówiliśmy, wydawcy nie wiedzą o subskrybentach.
Skalowalność: zapewnia sposób skalowania systemu do ogromnej objętości. Dzieje się tak dlatego, że wzorzec może obsługiwać dostarczanie komunikatów asynchronicznie, co oznacza, że nie blokuje innych części aplikacji.
Miłego PubSubowania!!!!

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































