Javascript Pub/Dịch vụ phụ
Chính xác nó là gì?
Dịch vụ Pub/Sub là mẫu thiết kế cho phép giao tiếp giữa các mô-đun khác nhau của ứng dụng web mà không phụ thuộc vào nhau. Nó cho phép các nhà xuất bản gửi tin nhắn đến người đăng ký mà không cần phải biết bất cứ điều gì về họ. Nhà xuất bản có thể xuất bản tin nhắn cho một chủ đề và người đăng ký có thể đăng ký chủ đề đó để nhận tin nhắn từ những chủ đề đó.
Kiểu thiết kế này chủ yếu hữu ích để xây dựng các ứng dụng web thời gian thực. Ví dụ: nếu chúng tôi đang xây dựng ứng dụng trò chuyện, chúng tôi có thể sử dụng dịch vụ Pub/Sub để gửi tin nhắn từ người dùng này sang người dùng khác trong thời gian thực. Điều này có thể đạt được khi dịch vụ Pub/Sub cho phép xử lý các sự kiện không đồng bộ.
Làm thế nào nó hoạt động ?
Một dịch vụ Pub/Sub thường bao gồm ba thành phần chính:
- Nhà xuất bản : Nhà xuất bản chịu trách nhiệm gửi tin nhắn đến một chủ đề. Đây có thể là bất kỳ phần nào của ứng dụng cần gửi tin nhắn.
- Chủ đề : Đó là nơi các tin nhắn được xuất bản. Người đăng ký có thể đăng ký chủ đề để nhận tin nhắn.
- Người đăng ký : Người đăng ký chịu trách nhiệm nhận tin nhắn từ một chủ đề. Đây có thể là bất kỳ phần nào của ứng dụng cần nhận tin nhắn.
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);
Hãy tập trung vào phương pháp đăng ký.
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);
}
}
}
Dịch vụ xuất bản
function publish(topic, message) {
if (!Array.isArray(subscribers[topic])) {
return;
}
subscribers[topic].forEach(
(callback) => callback(message)
);
}
Tại sao chúng ta nên sử dụng nó?
Khớp nối lỏng lẻo: Một trong những lợi thế lớn nhất của việc sử dụng hệ thống xuất bản/đăng ký là tách rời lỏng lẻo. Như chúng ta đã thảo luận, các nhà xuất bản không biết về những người đăng ký.
Khả năng mở rộng: Nó cung cấp một cách để mở rộng hệ thống thành một khối lượng lớn. Điều này là do mẫu có thể xử lý việc gửi thông báo không đồng bộ, nghĩa là mẫu không chặn các phần khác của ứng dụng.
Chúc mừng PubSub ing!!!!

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































