Javascript-Pub/Sub-Dienst
Was genau ist das?
Ein Pub/Sub-Dienst ist ein Entwurfsmuster, das die Kommunikation zwischen verschiedenen Modulen einer Webanwendung ermöglicht, ohne voneinander abhängig zu sein. Es ermöglicht Herausgebern, Nachrichten an Abonnenten zu senden, ohne etwas über sie wissen zu müssen. Herausgeber können Nachrichten zu einem Thema veröffentlichen und Abonnenten können dieses Thema abonnieren, um Nachrichten von diesen Themen zu erhalten.
Diese Art von Design eignet sich vor allem für die Erstellung von Echtzeit-Webanwendungen. Wenn wir beispielsweise eine Chat-App erstellen, können wir einen Pub/Sub-Dienst verwenden, um Nachrichten von einem Benutzer an einen anderen in Echtzeit zu senden. Dies kann dadurch erreicht werden, dass der Pub/Sub-Dienst die asynchrone Verarbeitung von Ereignissen ermöglicht.
Wie funktioniert es ?
Ein Pub/Sub-Dienst besteht normalerweise aus drei Hauptkomponenten:
- Herausgeber : Ein Herausgeber ist für das Versenden von Nachrichten an ein Thema verantwortlich. Dies kann jeder Teil der Anwendung sein, der Nachrichten senden muss.
- Thema : Der Ort, an dem die Nachrichten veröffentlicht werden. Abonnenten können ein Thema abonnieren, um Nachrichten zu erhalten.
- Abonnent : Ein Abonnent ist für den Empfang von Nachrichten zu einem Thema verantwortlich. Dies kann jeder Teil der Anwendung sein, der Nachrichten empfangen muss.
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);
Konzentrieren wir uns auf die Abonnementmethode.
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);
}
}
}
Der Veröffentlichungsdienst
function publish(topic, message) {
if (!Array.isArray(subscribers[topic])) {
return;
}
subscribers[topic].forEach(
(callback) => callback(message)
);
}
Warum sollten wir es verwenden?
Lose Kopplung: Einer der größten Vorteile des Publish/Subscribe-Systems ist die lose Entkopplung. Wie wir bereits besprochen haben, wissen die Verlage nichts über die Abonnenten.
Skalierbarkeit: Bietet eine Möglichkeit, das System auf ein großes Volumen zu skalieren. Dies liegt daran, dass das Muster die Zustellung von Nachrichten asynchron verarbeiten kann, was bedeutet, dass andere Teile der Anwendung nicht blockiert werden.
Viel Spaß beim PubSub!!!!

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































