Javascript Pub/Sub サービス
Mar 18 2023
正確には何ですか? Pub/Sub サービスは、Web アプリケーションの異なるモジュール間で相互に依存せずに通信できるようにする設計パターンです。これにより、パブリッシャーは購読者について何も知らなくても、購読者にメッセージを送信できます。
正確には何ですか?
Pub/Sub サービスは、Web アプリケーションの異なるモジュール間で相互に依存せずに通信できるようにする設計パターンです。これにより、パブリッシャーは購読者について何も知らなくても、購読者にメッセージを送信できます。パブリッシャーはメッセージをトピックにパブリッシュでき、サブスクライバーはそのトピックをサブスクライブして、それらのトピックからメッセージを受信できます。
この種の設計は、リアルタイム Web アプリケーションを構築する場合に主に役立ちます。たとえば、チャット アプリを構築している場合、Pub/Sub サービスを使用して、あるユーザーから別のユーザーにリアルタイムでメッセージを送信できます。これは、Pub/Sub サービスでイベントを非同期に処理できるため実現できます。
どのように機能するのでしょうか?
Pub/Sub サービスは通常、次の 3 つの主要コンポーネントで構成されます。
- パブリッシャー: パブリッシャーはトピックにメッセージを送信する責任があります。これは、メッセージを送信する必要があるアプリケーションの任意の部分にすることができます。
- トピック: メッセージが発行される場所。サブスクライバーはトピックをサブスクライブしてメッセージを受信できます。
- サブスクライバ: サブスクライバは、トピックからメッセージを受信する責任があります。これは、メッセージを受信する必要があるアプリケーションの任意の部分にすることができます。
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)
);
}
なぜそれを使用する必要があるのでしょうか?
疎結合:パブリッシュ/サブスクライブ システムを使用する最大の利点の 1 つは、疎結合です。すでに説明したように、パブリッシャーは購読者のことを知りません。
スケーラビリティ:システムを大規模なボリュームに拡張する方法を提供します。これは、パターンがメッセージの配信を非同期に処理できるためであり、アプリケーションの他の部分をブロックしないことを意味します。
PubSub おめでとうございます!!!!

![とにかく、リンクリストとは何ですか?[パート1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































