บริการ Javascript Pub/Sub
มันคืออะไรกันแน่?
บริการ Pub/Sub คือรูปแบบการออกแบบที่ช่วยให้สามารถสื่อสารระหว่างโมดูลต่างๆ ของเว็บแอปพลิเคชันโดยไม่ต้องพึ่งพาซึ่งกันและกัน ช่วยให้ผู้เผยแพร่สามารถส่งข้อความถึงสมาชิกโดยไม่ต้องรู้อะไรเกี่ยวกับพวกเขา ผู้เผยแพร่สามารถเผยแพร่ข้อความไปยังหัวข้อ และผู้สมัครสมาชิกสามารถสมัครรับข้อมูลในหัวข้อนั้นเพื่อรับข้อความจากหัวข้อเหล่านั้น
การออกแบบประเภทนี้มีประโยชน์อย่างมากสำหรับการสร้างเว็บแอปพลิเคชันแบบเรียลไทม์ ตัวอย่างเช่น หากเรากำลังสร้างแอปแชท เราสามารถใช้บริการ Pub/Sub เพื่อส่งข้อความจากผู้ใช้คนหนึ่งไปยังอีกคนหนึ่งแบบเรียลไทม์ สิ่งนี้สามารถทำได้เนื่องจากบริการ Pub/Sub อนุญาตให้จัดการเหตุการณ์แบบอะซิงโครนัส
มันทำงานอย่างไร ?
โดยทั่วไปแล้วบริการ Pub/Sub จะประกอบด้วยองค์ประกอบหลักสามส่วน:
- Publisher : ผู้เผยแพร่มีหน้าที่ส่งข้อความไปยังหัวข้อต่างๆ นี่อาจเป็นส่วนใดก็ได้ของแอปพลิเคชันที่ต้องการส่งข้อความ
- หัวข้อ : เป็นที่ที่ข้อความถูกเผยแพร่ไป สมาชิกสามารถสมัครสมาชิกกระทู้เพื่อรับข้อความ
- สมาชิก : สมาชิกมีหน้าที่รับผิดชอบในการรับข้อความจากหัวข้อ นี่อาจเป็นส่วนใดก็ได้ของแอปพลิเคชันที่ต้องการรับข้อความ
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)