Aracılığıyla paylaş


Sunucudan ileti gönderme

Tanıdık HTTP isteği/yanıt modeli, kullanımı kolay ve ölçeklenebilir olacak şekilde tasarlanmıştır. Ancak günümüzde son kullanıcılar web'den başlangıçta tasarlanandan çok daha fazlasını talep ediyor. HTTP protokolü, kullanıcıların yanıt almak için isteği başlatmasını gerektirir. Ancak geliştiriciler, istemeden sunucudan istemcilere veri göndermek için bir yönteme ihtiyaç duyar; başka bir deyişle, bir müzayede sitesinde bir ürünün en son teklif fiyatını gönderme veya finansal bir uygulamada hızlı hareket eden hisse senedi fiyatları gibi verileri müşterilere "göndermeleri " gerekir.

Bağlı istemciye veri göndererek uygulama sunucusunun GIF'i.

Bu hızlı başlangıç kılavuzunda

  • uygulama sunucusundan iletilere abone olma
  • bir uygulama sunucusundan tüm bağlı istemcilere veri gönderme

Önkoşullar

  • Web PubSub kaynağı. Henüz oluşturmadıysanız şu yönergeleri izleyebilirsiniz: Web PubSub kaynağı oluşturma
  • Visual Studio Code gibi bir kod düzenleyicisi
  • Kullanmayı planladığınız dilin bağımlılıklarını yükleme

Abone istemcisi oluşturma

Uygulama sunucunuzdan, istemcinizden, tarayıcıdan, mobil uygulamadan veya IoT cihazından gönderilen iletilere abone olmak için öncelikle Web PubSub kaynağınıza bağlanması ve uygun ileti olayını dinlemesi gerekir.

adlı subscriber bir proje dizini oluşturun ve gerekli bağımlılıkları yükleyin

mkdir subscriber
cd subscriber
npm init -y
    
# The client SDK is available as a module on NPM
npm install @azure/web-pubsub-client

Web PubSub kaynağınıza bağlanın ve olay için server-message bir dinleyici kaydedin

İstemci, kaynağınıza bağlanmak ve kaynağınızla kimlik doğrulaması yapmak için bir İstemci Erişim URL'si kullanır. Bu URL bir deseni izler wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. İstemcinin İstemci Erişim URL'sini almak için birkaç yolu olabilir. Bu hızlı başlangıç için aşağıdaki diyagramda gösterilen Azure portal kopyalayıp yapıştırabilirsiniz. Kodunuzdaki İstemci Erişimi URL'sini sabit kodla dönüştürmemek en iyi yöntemdir. Üretim dünyasında genellikle bu URL'yi isteğe bağlı olarak döndürmek için bir uygulama sunucusu ayarlarız. İstemci Erişimi URL'si Oluşturma , uygulamayı ayrıntılı olarak açıklar.

Diyagramda istemci erişim URL'sini alma gösterilmektedir.

Yukarıdaki diyagramda gösterildiği gibi, istemci adlı myHub1hub'ı birleştirir.

subscriber Proje klasöründe aşağıdaki kodla adlı subscribe.js bir dosya oluşturun

const { WebPubSubClient } = require("@azure/web-pubsub-client");

// Instantiates the client object
// <client-access-url> is copied from Azure portal mentioned above
const client = new WebPubSubClient("<client-access-url>")

// Registers a handler for the "server-message" event
client.on("server-message", (e) => {
    console.log(`Received message ${e.message.data}`)
});

// Before a client can receive a message, 
// you must invoke start() on the client object.
client.start();

Programı çalıştırma

node subscribe.js

Şimdi bu istemci Web PubSub kaynağınızla bir bağlantı kurar ve uygulama sunucunuzdan gönderilen iletileri almaya hazırdır.

Uygulama sunucunuzdan ileti gönderme

Artık Web PubSub kaynağınıza bağlı bir istemciniz olduğuna göre, Web PubSub tarafından sağlanan sunucu SDK'sını kullanarak istediğiniz zaman bir uygulama sunucusundan ileti gönderebilirsiniz.

adlı publisheryeni bir proje dizini oluşturun ve gerekli bağımlılıkları yükleyin

mkdir publisher
cd publisher

npm init

# This command installs the server SDK from NPM, 
# which is different from the client SDK you used in subscribe.js
npm install --save @azure/web-pubsub

Aşağıdaki kodla bir publish.js dosya oluşturun

const { WebPubSubServiceClient } = require('@azure/web-pubsub');

// This is the hub name we used on Azure portal when generating the Client Access URL. 
// It ensures this server can push messages to clients in the hub named "myHub1".
const hub = "myHub1";
    
let server = new WebPubSubServiceClient(process.env.WebPubSubConnectionString, hub);

// By default, the content type is `application/json`. 
// Specify contentType as `text/plain` for this demo.
server.sendToAll(process.argv[2], { contentType: "text/plain" });

Çağrı, server.sendToAll() bir hub'daki tüm bağlı istemcilere bir ileti gönderir.

Bağlantı dizesini alma

Önemli

Bağlantı dizesi, uygulamanızın Web PubSub hizmetine erişmesi için gereken yetkilendirme bilgilerini içerir. Bağlantı dizesi içindeki erişim anahtarı, hizmetinizin kök parolasına benzer.

Bu hızlı başlangıç kılavuzu için aşağıda gösterildiği gibi Azure portal'dan alacağız. İstemci erişim URL'sini almayı gösteren diyagram.

Sunucu programını çalıştırma

Aşağıdaki komutları yeni bir komut kabuğunda çalıştırın.

# Set the environment variable for your connection string.
export WebPubSubConnectionString="<Put your connection string here>" 

node publish.js "Hello World"

İstemci tarafında alınan iletileri gözlemleme

Bir uygulama sunucusunun bağlı istemciye veri göndermesini gösteren GIF.

İstemcilerden daha fazlasını uyarmak için aynı "abone ol" programını birden çok komut kabuğunda çalıştırmayı deneyin. "Yayımla" programı çalıştırılır çalıştırılmaz, iletilerin tüm bu istemcilere gerçek zamanlı olarak teslim edildiğini görmeniz gerekir.

Özet

Bu hızlı başlangıçta, bir uygulama sunucusundan hub'daki tüm bağlı istemcilere ileti göndermenin ne kadar kolay olduğu gösterilmektedir. Ayrıca, Web PubSub iletileri

  • hub'daki istemcilerin bir alt kümesi
  • hub'daki belirli bir grup
  • gruptaki istemcilerin bir alt kümesi

Bu API'ler, geliştiricilerin benzersiz iş mantığına odaklanmasını sağlarken Web PubSub'un düşük gecikme süresi (<100ms), yüksek kullanılabilirlik ve büyük ölçekli (milyondan fazla eşzamanlı bağlantı) sunduğundan emin olmasını sağlar.

Sonraki adımlar

Sonraki adımda, eksiksiz web uygulamaları oluşturmak için gereken Web PubSub olay sistemiyle nasıl çalışacağımızı keşfedeceğiz.