Служба публикации/подписки Javascript
Что именно?
Служба Pub/Sub — это шаблон проектирования, который позволяет взаимодействовать между различными модулями веб-приложения независимо друг от друга. Это позволяет издателям отправлять сообщения подписчикам, ничего о них не зная. Издатели могут публиковать сообщения в теме, а подписчики могут подписываться на эту тему, чтобы получать сообщения из этих тем.
Этот тип дизайна в основном полезен для создания веб-приложений в реальном времени. Например, если мы создаем приложение для чата, мы можем использовать службу Pub/Sub для отправки сообщений от одного пользователя другому в режиме реального времени. Этого можно достичь, поскольку служба Pub/Sub позволяет обрабатывать события асинхронно.
Как это работает ?
Служба Pub/Sub обычно состоит из трех основных компонентов:
- Издатель : издатель отвечает за отправку сообщений в темы. Это может быть любая часть приложения, которой необходимо отправлять сообщения.
- Тема : Здесь публикуются сообщения. Подписчики могут подписаться на тему, чтобы получать сообщения.
- Подписчик : Подписчик отвечает за получение сообщений из темы. Это может быть любая часть приложения, которому необходимо получать сообщения.
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);
Давайте сосредоточимся на методе подписки.
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);
}
}
}
Служба публикации
function publish(topic, message) {
if (!Array.isArray(subscribers[topic])) {
return;
}
subscribers[topic].forEach(
(callback) => callback(message)
);
}
Почему мы должны его использовать?
Слабая связь. Одним из самых больших преимуществ использования системы публикации/подписки является слабая развязка. Как мы уже говорили, издатели не знают о подписчиках.
Масштабируемость: обеспечивает возможность масштабирования системы до огромных объемов. Это связано с тем, что шаблон может обрабатывать доставку сообщений асинхронно, что означает, что он не блокирует другие части приложения.
Счастливый PubSub!!!!

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































