자바스크립트 Pub/Sub 서비스
Mar 18 2023
정확히 무엇입니까? Pub/Sub 서비스는 웹 애플리케이션의 서로 다른 모듈 간에 서로 의존하지 않고 통신할 수 있도록 하는 디자인 패턴입니다. 게시자는 구독자에 대해 아무것도 몰라도 구독자에게 메시지를 보낼 수 있습니다.
정확히 무엇입니까?
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 ing!!!!

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































