Service Pub/Sub Javascript
Qu'est-ce que c'est exactement ?
Un service Pub/Sub est un design pattern qui permet de faire communiquer différents modules d'une application web sans dépendre les uns des autres. Il permet aux éditeurs d'envoyer des messages aux abonnés sans rien savoir d'eux. Les éditeurs peuvent publier des messages dans un sujet et les abonnés peuvent s'abonner à ce sujet pour recevoir des messages de ces sujets.
Ce type de conception est surtout utile pour créer des applications Web en temps réel. Par exemple, si nous construisons une application de chat, nous pouvons utiliser un service Pub/Sub pour envoyer des messages d'un utilisateur à un autre en temps réel. Ceci peut être réalisé car le service Pub/Sub permet de gérer les événements de manière asynchrone.
Comment ça marche ?
Un service Pub/Sub se compose généralement de trois composants principaux :
- Éditeur : Un éditeur est chargé d'envoyer des messages à un sujet. Il peut s'agir de n'importe quelle partie de l'application qui doit envoyer des messages.
- Sujet : C'est là que les messages sont publiés. Les abonnés peuvent s'abonner au sujet pour recevoir des messages.
- Abonné : Un abonné est chargé de recevoir les messages d'un sujet. Il peut s'agir de n'importe quelle partie de l'application qui doit recevoir des messages.
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);
Concentrons-nous sur la méthode subscribe.
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);
}
}
}
Le service Publier
function publish(topic, message) {
if (!Array.isArray(subscribers[topic])) {
return;
}
subscribers[topic].forEach(
(callback) => callback(message)
);
}
Pourquoi devrions-nous l'utiliser ?
Couplage lâche : l'un des principaux avantages de l'utilisation du système de publication/abonnement est le découplage lâche. Comme nous en avons déjà discuté, les éditeurs ne connaissent pas les abonnés.
Évolutivité : Il fournit un moyen de faire évoluer le système à un volume énorme. En effet, le modèle peut gérer la livraison de messages de manière asynchrone, ce qui signifie qu'il ne bloque pas d'autres parties de l'application.
Bonne PubSub !!!!
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































