Udostępnij za pośrednictwem


Wypychanie komunikatów z serwera

Znany model żądania HTTP/odpowiedzi został zaprojektowany tak, aby był łatwy w pracy i skalowalny. Jednak w dzisiejszych czasach użytkownicy końcowi wymagają o wiele więcej od internetu, niż został pierwotnie zaprojektowany. Protokół HTTP wymaga od użytkowników zainicjowania żądania w celu otrzymania odpowiedzi. Jednak deweloperzy potrzebują sposobu wysyłania danych z serwera do klientów bez ich prośby o to; innymi słowy, muszą one "wypychać" dane do klientów, takie jak wypychanie najnowszej ceny przetargowej produktu na stronie aukcji lub szybkie ceny akcji w aplikacji finansowej.

Plik GIF serwera aplikacji wypycha dane do połączonego klienta.

W tym przewodniku Szybki start pokazano, jak

  • subskrybowanie komunikatów z serwera aplikacji
  • wypychanie danych z serwera aplikacji do wszystkich połączonych klientów

Wymagania wstępne

  • Zasób Web PubSub. Jeśli go nie utworzono, możesz postępować zgodnie ze wskazówkami: Tworzenie zasobu Web PubSub
  • Edytor kodu, taki jak Visual Studio Code
  • Instalowanie zależności dla języka, którego planujesz użyć

Tworzenie klienta subskrybenta

Aby zasubskrybować komunikaty wypchnięte z serwera aplikacji, klienta, zależnie od przeglądarki, aplikacji mobilnej lub urządzenia IoT, należy najpierw nawiązać połączenie z zasobem Web PubSub i nasłuchiwać odpowiedniego zdarzenia wiadomości.

Tworzenie katalogu projektu o nazwie subscriber i instalowanie wymaganych zależności

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

Nawiązywanie połączenia z zasobem Web PubSub i rejestrowanie odbiornika server-message dla zdarzenia

Klient używa adresu URL dostępu klienta do nawiązywania połączenia i uwierzytelniania przy użyciu zasobu. Ten adres URL jest zgodny ze wzorcem wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. Klient może mieć kilka sposobów uzyskania adresu URL dostępu klienta. W tym przewodniku Szybki start możesz skopiować i wkleić je z Azure Portal pokazanych na poniższym diagramie. Najlepszym rozwiązaniem jest to, aby nie kodować twardego adresu URL dostępu klienta w kodzie. W świecie produkcyjnym zwykle konfigurujemy serwer aplikacji, aby zwrócić ten adres URL na żądanie. Wygeneruj adres URL dostępu klienta opisuje szczegółowo praktykę.

Na diagramie przedstawiono sposób uzyskiwania adresu URL dostępu klienta.

Jak pokazano na powyższym diagramie, klient dołącza do centrum o nazwie myHub1.

W folderze subscriber projektu utwórz plik o nazwie subscribe.js z następującym kodem

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();

Uruchamianie programu

node subscribe.js

Teraz ten klient nawiązuje połączenie z zasobem Web PubSub i jest gotowy do odbierania komunikatów wypychanych z serwera aplikacji.

Wypychanie komunikatów z serwera aplikacji

Teraz, gdy masz klienta połączonego z zasobem Web PubSub, możesz wypychać komunikaty z serwera aplikacji w dowolnym momencie przy użyciu zestawu SDK serwera dostarczonego przez Web PubSub.

Tworzenie nowego katalogu projektu o nazwie publisher i instalowanie wymaganych zależności

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

publish.js Utwórz plik z następującym kodem

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" });

Wywołanie server.sendToAll() wysyła komunikat do wszystkich połączonych klientów w centrum.

Pobieranie parametrów połączenia

Ważne

Parametry połączenia zawierają informacje o autoryzacji wymagane dla aplikacji w celu uzyskania dostępu do usługi Web PubSub. Klucz dostępu wewnątrz parametrów połączenia jest podobny do hasła głównego usługi.

W tym przewodniku Szybki start uzyskamy go z Azure Portal, jak pokazano poniżej. Diagram przedstawia sposób uzyskiwania adresu URL dostępu klienta.

Uruchamianie programu serwera

Uruchom następujące polecenia w nowej powłoce poleceń.

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

node publish.js "Hello World"

Obserwowanie odebranych komunikatów po stronie klienta

Gif przedstawiający serwer aplikacji wypychający dane do połączonego klienta.

Spróbuj uruchomić ten sam program "subskrybuj" w wielu powłokach poleceń, aby pobudzić więcej niż klientów. Po uruchomieniu programu "publikowanie" powinny być wyświetlane komunikaty dostarczane w czasie rzeczywistym do wszystkich tych klientów.

Podsumowanie

W tym przewodniku Szybki start pokazano, jak łatwo jest wypychać komunikaty z serwera aplikacji do wszystkich połączonych klientów w centrum. Ponadto usługa Web PubSub umożliwia wypychanie komunikatów do

  • podzestaw klientów w centrum
  • określona grupa w centrum
  • podzestaw klientów w grupie

Te interfejsy API umożliwiają korzystanie z wielu przypadków użycia, dzięki czemu deweloperzy mogą skupić się na unikatowej logice biznesowej, zapewniając jednocześnie, że usługa Web PubSub oferuje małe opóźnienia (<100 ms),wysoką dostępność i ogromną skalę (milion+ równoczesne połączenia).

Następne kroki

W następnym kroku dowiemy się, jak pracować z systemem zdarzeń usługi Web PubSub, niezbędnym do utworzenia kompletnych aplikacji internetowych.