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 domagają się o wiele więcej od internetu, niż pierwotnie został zaprojektowany. Protokół HTTP wymaga od użytkowników zainicjowania żądania w celu odebrania odpowiedzi. Deweloperzy potrzebują jednak sposobu wysyłania danych z serwera do klientów bez ich prośby o to; innymi słowy, muszą "wypychać " dane do klientów, takie jak wypychanie najnowszej ceny licytacji produktu na stronie aukcji lub szybkie ceny akcji w aplikacji finansowej.

Plik GIF serwera aplikacji wypychania danych 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

Ważne

Nieprzetworzone parametry połączenia są wyświetlane tylko w tym artykule w celach demonstracyjnych.

Parametry połączenia zawiera informacje o autoryzacji wymagane przez aplikację w celu uzyskania dostępu do usługi Azure Web PubSub. Klucz dostępu wewnątrz parametry połączenia jest podobny do hasła głównego usługi. W środowiskach produkcyjnych zawsze chroń klucze dostępu. Użyj usługi Azure Key Vault, aby bezpiecznie zarządzać kluczami i obracać je oraz zabezpieczać połączenie za pomocą usługi WebPubSubServiceClient.

Unikaj dystrybuowania kluczy dostępu do innych użytkowników, kodowania ich lub zapisywania ich w dowolnym miejscu w postaci zwykłego tekstu, który jest dostępny dla innych użytkowników. Obracanie kluczy, jeśli uważasz, że mogły one zostać naruszone.

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 wypychane z serwera aplikacji, klienta, przeglądarki, aplikacji mobilnej lub urządzenia IoT, należy najpierw nawiązać połączenie z zasobem Web PubSub i nasłuchuje 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 za pomocą 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. Na potrzeby tego przewodnika Szybki start możesz skopiować i wkleić go z witryny Azure Portal pokazanej na poniższym diagramie. Najlepszym rozwiązaniem jest, aby nie kodować twardego adresu URL dostępu klienta w kodzie. W świecie produkcyjnym zwykle konfigurujemy serwer aplikacji, aby zwracał 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 z subscribe.js 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 usługę 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 przy użyciu następującego kodu

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 zawiera informacje o autoryzacji wymagane przez aplikację w celu uzyskania dostępu do usługi Web PubSub. Klucz dostępu wewnątrz parametry połączenia jest podobny do hasła głównego usługi.

W tym przewodniku Szybki start uzyskamy go z witryny 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ń.

Nieprzetworzone parametry połączenia są wyświetlane tylko w tym artykule w celach demonstracyjnych. W środowiskach produkcyjnych zawsze chroń klucze dostępu. Użyj usługi Azure Key Vault, aby bezpiecznie zarządzać kluczami i obracać je oraz zabezpieczać połączenie za pomocą usługi WebPubSubServiceClient.

# 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

Plik GIF demonstrują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 wypychać komunikaty z serwera aplikacji do wszystkich połączonych klientów w centrum. Ponadto usługa Web PubSub umożliwia wypychanie komunikatów do

  • podzbiór klientów w centrum
  • określona grupa w centrum
  • podzbiór 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, a jednocześnie mieć pewność, że usługa Web PubSub oferuje małe opóźnienia (<100 ms), wysoką dostępność i ogromną skalę (milion+ jednoczesne połączenia).

Następne kroki

W następnym kroku dowiemy się, jak pracować z systemem zdarzeń usługi Web PubSub, który jest niezbędny do kompilowania kompletnych aplikacji internetowych.