Javascript Pub/Sub hizmeti
Tam olarak nedir?
Pub/Sub hizmeti, bir web uygulamasının farklı modülleri arasında birbirine bağımlı olmadan iletişim kurmayı sağlayan tasarım desenidir. Yayıncıların, onlar hakkında hiçbir şey bilmeden abonelere mesaj göndermesine olanak tanır. Yayıncılar bir konuda mesaj yayınlayabilir ve aboneler bu konudan mesaj almak için o konuya abone olabilir.
Bu tür bir tasarım, çoğunlukla gerçek zamanlı web uygulamaları oluşturmak için kullanışlıdır. Örneğin, bir sohbet uygulaması oluşturuyorsak, bir kullanıcıdan diğerine gerçek zamanlı olarak mesaj göndermek için bir Pub/Sub hizmetini kullanabiliriz. Bu, Pub/Sub hizmetinin olayları eşzamansız olarak işlemesine izin verdiği için elde edilebilir.
O nasıl çalışır ?
Bir Pub/Sub hizmeti genellikle üç ana bileşenden oluşur:
- Yayıncı : Bir yayıncı, bir konuya mesaj göndermekten sorumludur. Bu, uygulamanın mesaj göndermesi gereken herhangi bir parçası olabilir.
- Konu : Mesajların yayınlandığı yerdir. Aboneler mesaj almak için konuya abone olabilir.
- Abone : Abone, bir konudan mesaj almakla yükümlüdür. Bu, uygulamanın mesaj alması gereken herhangi bir parçası olabilir.
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);
Abone olma yöntemine odaklanalım.
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);
}
}
}
Yayınlama hizmeti
function publish(topic, message) {
if (!Array.isArray(subscribers[topic])) {
return;
}
subscribers[topic].forEach(
(callback) => callback(message)
);
}
Neden kullanmalıyız?
Gevşek bağlantı: Yayınla/abone ol sistemini kullanmanın en büyük avantajlarından biri gevşek ayrıştırmadır. Daha önce tartıştığımız gibi, yayıncılar aboneler hakkında bilgi sahibi değil.
Ölçeklenebilirlik: Sistemi büyük bir hacme ölçeklendirmek için bir yol sağlar. Bunun nedeni, kalıbın mesajların teslimini eşzamansız olarak işleyebilmesidir, bu da uygulamanın diğer bölümlerini engellemediği anlamına gelir.
Mutlu PubSubing!!!!

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































